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.
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.
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.
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)
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.
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.
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.
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
# "><script>alert(document.cookie);</script>
Recommended Posts