Wie um zu überprüfen, text-Datei existiert und nicht leer ist, in python
Schrieb ich ein Skript, den text zu Lesen-Datei in python.
Hier ist der code.
parser = argparse.ArgumentParser(description='script')
parser.add_argument('-in', required=True, help='input file',
type=argparse.FileType('r'))
parser.add_argument('-out', required=True, help='outputfile',
type=argparse.FileType('w'))
args = parser.parse_args()
try:
reader = csv.reader(args.in)
for row in reader:
print "good"
except csv.Error as e:
sys.exit('file %s, line %d: %s' % (args.in, reader.line_num, e))
for ln in args.in:
a, b = ln.rstrip().split(':')
Ich würde gerne überprüfen, ob die Datei existiert und ist nicht leer Datei ist aber dieser code gibt mir einen Fehler aus.
Ich würde auch gerne überprüfen, ob das Programm schreiben kann, um die Ausgabe-Datei.
Befehl:
python script.py -in file1.txt -out file2.txt
FEHLER:
good
Traceback (most recent call last):
File "scritp.py", line 80, in <module>
first_cluster = clusters[0]
IndexError: list index out of range
- Überprüfen Sie diesen link: stackoverflow.com/questions/2259382/...
- dass der code nicht selbst analysieren,
in
ist kein Gültiger Bezeichner ist (inargs.in
) - Wo kommt
first_cluster = clusters[0]
erscheinen in Ihrem code? - Das Skript gibt einen Fehler aus, weil die FOR-Schleife bekommt, ist fehlgeschlagen. Wenn Sie zu Lesen beginnen-Datei Fehler beim Lesen der Datei von args.in . wie lese ich die Datei mit argument-parser?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Um zu überprüfen, ob eine Datei existiert und nicht leer ist, müssen Sie rufen Sie die Kombination von
os.Pfad.existiert
undos.Pfad.getsize
mit der "und" - Bedingung. Zum Beispiel:Als alternative, können Sie auch
try/except
mit deros.Pfad.getsize
(ohneos.path.exists
), weil es wirftOSError
wenn die Datei nicht existiert oder wenn Sie nicht über die Berechtigung zum Zugriff auf die Datei. Zum Beispiel:Referenzen aus der Python-3-Dokument
os.Pfad.getsize()
wird:Leere Datei, wird es wieder
0
. Zum Beispiel:in der Erwägung, dass
os.Pfad.exists(Pfad)
wird:must_be_downloaded = not os.path.isfile(file_path) or os.path.getsize(file_path) == 0
und es funktioniert w/o try/catch-in python 3.6. Oder nutzen Sie das Gegenteil:exists_for_real = os.path.isfile(file_path) and os.path.getsize(file_path) > 0
Sie können Ihre eigenen, überprüft und weitere Bedingungen hinzufügen, aber ich habe gescriptet das gleiche und das einfache Kontrolle funktioniert gut, in meinem Fall.