Lire les arguments à partir du nom de fichier ou de stdin
#!/usr/bin/env python3
"""
Si l'argument est un fichier, le contenu du fichier,
Sinon, imprimez l'argument
"""
import sys
import fileinput
from pathlib import Path
if Path(sys.argv[1]).exists(): #Si le premier argument est un fichier
for line in fileinput.input(): #Imprimer le contenu du fichier ligne par ligne
print('file input')
print(line)
else: #Si le premier argument n'est pas un fichier
for i in sys.argv[1:]: #Imprimer la chaîne d'argument
print('args input')
print(i)
Résultat d'exécution
$ python stdin_test.py hoge.txt fuga.txt
file input
MYNAME!
file input
HERO!!
$ python stdin_test.py 1 2 3
args input
1
args input
2
args input
3
Puisque sys.argv
est retourné sous forme de liste, je l'ai utilisé pour que le résultat de fileinput.input ()
soit également renvoyé au format liste.
Lisez l'argument du nom de fichier ou de stdin et renvoyez-le sous forme de liste
if Path(sys.argv[1]).exists(): #Si le premier argument est un fichier
ARGV = [
line.replace('\n', '') for line in fileinput.input() #Supprimer les sauts de ligne
if line != '\n' #Supprimer la ligne vierge
]
else: #Si le premier argument n'est pas un fichier
ARGV = sys.argv[1:]
Document officiel Python
Recommended Posts