Je pensais que j'écrirais le 4ème jour tel qu'il est après le 3ème jour de démarrage de Python, mais cela semble être assez long, alors j'ai décidé de préparer une nouvelle histoire du 4ème jour et de la déplacer. Cette fois, l'histoire principale est d'utiliser l'exécutable de PHP dans le sous-processus de Python. Je pense que cela sera utile pour les applications où Python est utilisé dans le cadre des fonctions Linux. C'est proche du traitement par lots, mais il a également l'avantage de l'exécuter en Python.
Ceux qui étudient (recherchent) les langages de programmation écrivent des contenus systématiquement organisés. Je pense que tout le monde est merveilleux. Dans mon cas, je suis en position d'utiliser un ordinateur ou un langage de programmation comme outil, donc c'est différent du flux général car je recherche et façonne à chaque fois le contenu nécessaire. Si vous commencez "quelque chose comme", cela sera nécessaire, veuillez donc prendre et utiliser uniquement la pièce de référence.
Puisqu'il est nécessaire de vérifier le format du fichier supprimé du WEB, en PHP, ce qui suit a été exécuté pour vérifier la valeur de retour et ajouter l'extension de fichier. De nombreux programmes déterminent toujours ce qu'est le fichier en regardant l'extension du fichier, vous devez donc le faire ici. Ce sera probablement inutile à l'avenir, mais c'est toujours nécessaire maintenant.
file.php
exec('file -i -b data/default.xlsx', $out, $ret);
echo $out[0];
//La valeur de retour est la suivante
// 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)
#La valeur de retour est la suivante
# application/vnd.ms-excel; charset=binary
PHP et Python ont naturellement la même valeur de retour.
J'essayais également de faire cela avec le sous-processus, mais j'ai trouvé un moyen d'utiliser le module pdftotext en l'incorporant dans Linux, et je me demandais ce qui s'était passé. Vous pouvez trouver la méthode sur le lien suivant. Convertir un PDF en texte avec pdftotext Est-ce un article, le code n'est-il pas compliqué? Si vous y réfléchissez, il prépare même un écran d'affichage, je vais donc simplement utiliser le sous-processus comme référence plus tard. Comparons-le encore avec le code PHP.
pdftotext.php
$command ="pdftotext -layout -nopgbrk data/*.pdf";
shell_exec($command);
pdftotext.py
import subprocess
args = ['pdftotext','-layout','-nopgbrk','data/sjd23d_mn.pdf'] # (Ne convertit pas sauf si le nom du fichier est spécifié)
args = ['pdftotext','-layout','-nopgbrk',"data/*.pdf"] #(Peut être spécifié par des astériques avec double revêtement)
proc = subprocess.run(args)
Cela n'a pas fonctionné immédiatement et a commencé à fonctionner avec un léger changement, mais au début, je ne pouvais pas convertir en prenant le nom du fichier avec des astérisques. J'ai écrit ceci dans le code, mais si vous insérez la spécification du nom de fichier avec une double prudence, vous pouvez le spécifier avec des astériques. C'était inutile car je l'ai écrit sous forme de spécification des paramètres de sous-processus, mais cette différence est importante. (C'est pour moi)
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)
Le résultat semble inutile si vous ne spécifiez pas le nom du fichier lors de la conversion du PDF en image. Cela fonctionne un peu différemment de PHP. Il existe peut-être un moyen d'importer pdftoppm dans Python et de l'utiliser, mais c'est une autre fois.
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/']
#Si vous avez besoin d'un mot de passe
args = ['unar','-f','-p','passw','data/selenium-master.zip','-D','-o','data/']
proc = subprocess.run(args)
La décompression du fichier compressé semble bonne avec cela. 5.selenium Cela ne semble pas facile, je vais donc aller un peu plus loin.
Cela était absolument nécessaire pour effacer les traces du fichier décompressé unar. Je vais d'abord vous montrer comment le faire en PHP. Je vais le faire avec Python, mais il semble y avoir différentes méthodes, donc je vais y réfléchir à partir de maintenant.
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) {
//Traitement séparé par fichier ou répertoire
if (is_dir("$dir/$file")) {
//S'il s'agit d'un répertoire, appelez à nouveau la même fonction
remove_directory("$dir/$file");
} else {
//Supprimer si fichier
unlink("$dir/$file");
//echo "Fichier:" . $dir . "/" . $file . "Effacer\n";
}
}
//Supprimer le répertoire spécifié
return rmdir($dir);
}
delete.py
import pathlib
import shutil
p = pathlib.Path('selenium-master')
shutil.rmtree(p)
--Supprimez les fichiers et répertoires dans le répertoire spécifié par Python à la fois (enfin, c'est une belle personne)
all_del.py
import shutil
import glob
import os
#Une liste de fichiers et de dossiers dans le répertoire my_Mettez-le dans la liste.
my_list = glob.glob("./data/*")
# my_Faites circuler le contenu de la liste jusqu'à la fin.
for value in my_list:
#Séparez les commandes à supprimer selon qu'il s'agit de fichiers ou de dossiers.
if os.path.isfile(value):
os.remove(value)
elif os.path.isdir(value):
shutil.rmtree(value)
Il n'y a aucun autre site qui publie cette méthode et ce code. Vous pouvez également l'utiliser pour sélectionner l'extension du fichier que vous souhaitez effacer. Par-dessus tout, je voulais effacer le fichier décompressé. S'il existe une méthode plus belle, faites-le moi savoir.
Les fonctions sont fournies en standard en PHP, mais il semble que Python soit rarement vu.
sanitizing.php
$wfull = htmlspecialchars($wtarget, ENT_QUOTES);
Il semble y avoir une telle méthode, mais j'aimerais l'examiner un peu plus.
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)
#Eh bien, vous pouvez gérer la désinfection
# "><script>alert(document.cookie);</script>
Recommended Posts