Lesen Sie die Argumente aus dem Dateinamen oder dem Standard
#!/usr/bin/env python3
"""
Wenn das Argument eine Datei ist, wird der Inhalt der Datei,
Andernfalls drucken Sie das Argument
"""
import sys
import fileinput
from pathlib import Path
if Path(sys.argv[1]).exists():  #Wenn das erste Argument eine Datei ist
    for line in fileinput.input():  #Drucken Sie den Inhalt der Datei Zeile für Zeile
        print('file input')
        print(line)
else:  #Wenn das erste Argument keine Datei ist
    for i in sys.argv[1:]:  #Drucken Sie die Argumentzeichenfolge
        print('args input')
        print(i)
Ausführungsergebnis
$ 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
Da sys.argv als Liste zurückgegeben wird, habe ich es verwendet, damit das Ergebnis von fileinput.input () auch im Listenformat zurückgegeben wird.
Lesen Sie das Argument aus dem Dateinamen oder stdin und geben Sie es als Liste zurück
if Path(sys.argv[1]).exists():  #Wenn das erste Argument eine Datei ist
    ARGV = [
        line.replace('\n', '') for line in fileinput.input()  #Zeilenumbrüche löschen
        if line != '\n'  #Leere Zeile löschen
    ]
else:  #Wenn das erste Argument keine Datei ist
    ARGV = sys.argv[1:]
Python offizielles Dokument
Recommended Posts