Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)

Einführung

Ich dachte, ich würde den 4. Tag so schreiben, wie er nach dem 3. Tag des Starts von Python ist, aber es scheint ziemlich lang zu sein, also habe ich beschlossen, eine neue Geschichte für den 4. Tag vorzubereiten und sie zu verschieben. Dieses Mal besteht die Hauptgeschichte darin, PHPs exec in Pythons Unterprozess zu verwenden. Ich denke, es wird für Anwendungen hilfreich sein, in denen Python als Teil von Linux-Funktionen verwendet wird. Es steht kurz vor der Stapelverarbeitung, hat aber auch den Vorteil, dass es in Python ausgeführt wird.

Ablehnung des Grundes, warum die Geschichte überspringt

Diejenigen, die Programmiersprachen gut studieren (erforschen), haben die Inhalte systematisch organisiert. Ich finde alle wunderbar. In meinem Fall bin ich in der Lage, einen Computer oder eine Programmiersprache als Werkzeug zu verwenden. Dies unterscheidet sich vom allgemeinen Ablauf, da ich jedes Mal die erforderlichen Inhalte recherchiere und gestalte. Wenn Sie "so etwas wie" starten, ist dies erforderlich. Nehmen Sie daher bitte nur das Referenzteil auf und verwenden Sie es.

1. 1. Untersuchen Sie das Dateiformat (identifizieren Sie Word Excel PowerPoint PDF ohne Erweiterung)

Da in PHP das Format der aus dem WEB abgelegten Datei überprüft werden muss, wurde Folgendes ausgeführt, um den Rückgabewert zu überprüfen und die Dateierweiterung hinzuzufügen. Viele Programme bestimmen immer noch, was die Datei ist, indem sie sich die Dateierweiterung ansehen. Sie müssen dies also hier tun. Es wird wahrscheinlich in Zukunft unnötig sein, aber es wird jetzt noch benötigt.

file.php


exec('file -i -b data/default.xlsx', $out, $ret);
echo $out[0];
//Der Rückgabewert ist wie folgt
// application/vnd.ms-excel; charset=binary

file.py



import subprocess
args = ['file','-i','-b','default.xlsx']
proc = subprocess.run(args,stdout = subprocess.PIPE, stderr = subprocess.PIPE)
string = proc.stdout.decode("utf8")
none = 'no'
if string.find('excel') < 0:
	print(none)
elif string.find('excel') > 0:
	print(string)
#Der Rückgabewert ist wie folgt
# application/vnd.ms-excel; charset=binary

Sowohl PHP als auch Python haben selbstverständlich den gleichen Rückgabewert.

2. PDF in Textdatei konvertieren

Ich habe versucht, dies auch mit Unterprozessen zu tun, aber ich habe einen Weg gefunden, das pdftotext-Modul zu verwenden, indem ich es in Linux eingebettet habe, und ich habe mich gefragt, was passiert ist. Sie finden die Methode unter folgendem Link. PDF mit pdftotext in Text konvertieren Ist dies ein Artikel, ist der Code nicht kompliziert? Wenn Sie darüber nachdenken, wird sogar ein Bildschirm vorbereitet, sodass ich später einfach den Unterprozess als Referenz verwenden werde. Vergleichen wir es trotzdem mit dem PHP-Code.

pdftotext.php



$command ="pdftotext -layout -nopgbrk data/*.pdf";
shell_exec($command);

pdftotext.py



import subprocess
args = ['pdftotext','-layout','-nopgbrk','data/sjd23d_mn.pdf'] # (Konvertiert nur, wenn der Dateiname angegeben ist)
args = ['pdftotext','-layout','-nopgbrk',"data/*.pdf"] #(Kann durch Sternchen mit Doppelbeschichtung angegeben werden)
proc = subprocess.run(args)

Es funktionierte nicht sofort und begann mit einer geringfügigen Änderung zu arbeiten, aber zuerst konnte ich nicht konvertieren, indem ich den Dateinamen mit Sternchen aufnahm. Ich habe dies in den Code geschrieben, aber wenn Sie die Dateinamenangabe mit doppelter Vorsicht einschließen, können Sie sie mit Sternchen angeben. Es war nutzlos, weil ich es in Form der Angabe der Parameter des Unterprozesses geschrieben habe, aber dieser Unterschied ist wichtig. (Das ist für mich)

3. 3. PDF in Bild konvertieren

pdftoppm.php



$command ="pdftoppm -jpeg data/*.pdf data/";
shell_exec($command);

pdftoppm.py



import subprocess
args = ['pdftoppm','-jpeg',"data/*.pdf","data/"]
args = ['pdftoppm','-jpeg','data/sjd23d_mn.pdf','data/']
proc = subprocess.run(args)

Das Ergebnis scheint nutzlos zu sein, wenn Sie beim Konvertieren von PDF in ein Bild den Dateinamen nicht angeben. Es funktioniert etwas anders als PHP. Vielleicht gibt es eine Möglichkeit, pdftoppm in Python zu importieren und zu verwenden, aber das ist ein anderes Mal.

4. Dekomprimierung einer komprimierten Datei (um verstümmelte Zeichen im japanischen Dateinamen zu behandeln)

unar.php



$command = 'unar -f data/data/selenium-master.zip -D -o data';
shell_exec($command);

unar.py



import subprocess
args = ['unar','-f','data/selenium-master.zip','-D','-o','data/']
#Wenn Sie ein Passwort benötigen
args = ['unar','-f','-p','passw','data/selenium-master.zip','-D','-o','data/']
proc = subprocess.run(args)

Die Dekomprimierung der komprimierten Datei sieht damit gut aus. 5.selenium Das scheint nicht einfach zu sein, also werde ich noch ein bisschen weiter gehen.

6. Massenlöschung von Ordnern und Dateien

Dies war unbedingt erforderlich, um die Spuren der nicht entpackten Datei zu löschen. Zuerst zeige ich Ihnen, wie es in PHP geht. Ich werde dies mit Python tun, aber es scheint verschiedene Methoden zu geben, also werde ich es von nun an in Betracht ziehen.

delete.php



foreach (glob($relative.'/data/*.*') as $file) {
  unlink($file);
}
foreach (glob($relative.'/data/*') as $file) {
  unlink($file);
  remove_directory($file);
}

function remove_directory($dir) {
    $files = array_diff(scandir($dir), array('.','..'));
    foreach ($files as $file) {
        //Separate Verarbeitung nach Datei oder Verzeichnis
        if (is_dir("$dir/$file")) {
            //Wenn es sich um ein Verzeichnis handelt, rufen Sie dieselbe Funktion erneut auf
            remove_directory("$dir/$file");
        } else {
            //If-Datei löschen
            unlink("$dir/$file");
            //echo "Datei:" . $dir . "/" . $file . "Löschen\n";
        }
    }
    //Löschen Sie das angegebene Verzeichnis
    return rmdir($dir);
}

delete.py



import pathlib
import shutil
p = pathlib.Path('selenium-master')
shutil.rmtree(p)

all_del.py



import shutil
import glob
import os
#Eine Liste der Dateien und Ordner im Verzeichnis my_Setzen Sie es in die Liste.
my_list = glob.glob("./data/*")
# my_Fließen Sie den Inhalt der Liste bis zum Ende.
for value in my_list:
#Trennen Sie die zu löschenden Befehle davon, ob es sich um Dateien oder Ordner handelt.
	if os.path.isfile(value):
		os.remove(value)
	elif os.path.isdir(value):
		shutil.rmtree(value)

Es gibt keine andere Site, die diese Methode und diesen Code veröffentlicht. Sie können dies auch verwenden, um die Erweiterung der Datei auszuwählen, die Sie löschen möchten. Vor allem wollte ich die entpackte Datei löschen. Wenn es eine schönere Methode gibt, lassen Sie es mich bitte wissen.

7. Desinfizieren

Funktionen werden standardmäßig in PHP bereitgestellt, aber es scheint, dass Python selten gesehen wird.

sanitizing.php



$wfull = htmlspecialchars($wtarget, ENT_QUOTES);

Es scheint eine solche Methode zu geben, aber ich würde sie gerne etwas genauer betrachten.

sanitizing.py



import cgi
inlist = 'https://www.yahoo.co.jp/'
transform = cgi.escape(inlist)
print(transform)
# https://www.yahoo.co.jp/
inlist = '"><script>alert(document.cookie);</script>'
transform = cgi.escape(inlist)
print(transform)
#Nun, Sie können mit Desinfektion umgehen
# "&gt;&lt;script&gt;alert(document.cookie);&lt;/script&gt;

Recommended Posts

Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 5. Tag nach dem Start von Python (Selen) PHP gegen Python
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 4. Tag des Startens von Python (Unterprozess)
Erfahrene Leute, die hauptsächlich PHP verwenden, sprechen über den 5. Tag nach dem Start von Python (Selen) PHP gegen Python
Über die Funktionen von Python
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Informationen zur Grundlagenliste der Python-Grundlagen
Informationen zu Python-Code für einfachen gleitenden Durchschnitt unter Verwendung von Numba
Informationen zur virtuellen Umgebung von Python Version 3.7
Über die Funktionen von Python
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Informationen zur Grundlagenliste der Python-Grundlagen
Informationen zu Python-Code für einfachen gleitenden Durchschnitt unter Verwendung von Numba
Informationen zur virtuellen Umgebung von Python Version 3.7
[Python2.7] Zusammenfassung der Verwendung des Unterprozesses
Zusammenfassung der Unterschiede zwischen PHP und Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Bildverarbeitung? Die Geschichte, Python für zu starten
[Hinweis] Über die Rolle des Unterstrichs "_" in Python
[Python] Holen Sie sich den Tag (Englisch & Japanisch)