Heim >Backend-Entwicklung >Python-Tutorial >Python-Schleifen funktionieren nicht mit readlines()
Es sollte die Anzahl der „--------------------------------------“-Zeilen zählen, aber es funktioniert auch nicht kann print("test") verwenden, das nicht in der Konsole angezeigt wird, es wird immer 0 zurückgegeben. Aber zum Beispiel funktioniert die Zeile print("hi"). Das Programm erkennt meine Schleife einfach nicht und ich weiß nicht warum. :(
def check_id(): with open('data.txt', 'r') as f: lines = f.readlines() ad = 0 print("hi") # this line works for i in lines: print("test") # this line doesn't work if i == "-------------------------": ad += 1 return str(ad)
Wenn ich den vollständigen Code senden muss, um das Problem zu lösen, fragen Sie bitte nach
Ich habe den Modus „a+“ in „r“ geändert, damit die Zeilen korrekt gelesen werden, und das tut es auch, aber ich kann das Array immer noch nicht überprüfen, um die Anzahl der Zeilen zu ermitteln. Wenn Sie Vermutungen oder Lösungen haben, schreiben Sie diese bitte auf.
EDIT: Hier ist der vollständige Code für meine data.py und der Text in der Datei data.txt
from datetime import date date = date.today() def write_note(line): with open('data.txt', 'a') as f: if line == "!quit": f.write('\n') f.write("-------------------------") f.write('\n') ad = check_id() f.write(ad) f.write('\n') f.write("________________________") f.write('\n') else: f.write(line) f.write("\n") def read_note(id): with open('data.txt', 'r') as f: pass def see_all(): with open('data.txt', 'r') as f: get_lines = f.readlines() for i in get_lines: print(i) return get_lines def del_note(ad): with open('data.txt', 'a') as f: pass def logs(): pass def check_id(): with open('data.txt', 'r') as f: ad = 0 for i in f: if i == "-------------------------": ad += 1 return str(ad)
Jetzt ist es eine TXT-Datei:
fugy hello hai bebra ------------------------- 0 ________________________ uha imna fsjfoe geso;rsevdn ------------------------- 0 # This one ________________________
Ich versuche, ein Notizbuch zu erstellen, damit ich Notizen schreiben und sie lesen kann. Funktion löschen. Ich werde es später tun. Die Idee besteht darin, diese Null jedes Mal zu vergrößern, wenn Sie eine Anmerkung hinzufügen.
Ich denke, das Problem besteht darin, dass Ihr data.txt
文件(可能是空的,因为您提到 "test"
在控制台中不可见,这意味着该脚本不在 for
循环中运行,在其他word: lines
Iterator die Länge Null hat.
Ich habe einen funktionierenden Code geschrieben. Sie können den Code und die Testdatei mit der Skriptausgabe unten sehen.
Code:
def check_id(): with open('data.txt', 'r') as opened_file: ad = 0 print("hi") # this line works for i in opened_file: print("test") # this line doesn't work if i == "-------------------------": ad += 1 return str(ad) result = check_id() print(f"result: {result}")
data.txt
Inhalt:
test_1 ------------------------- test_2 ------------------------- test_3 ------------------------- test_4
Test:
> python3 test.py hi test test test test test test test result: 0
Herausgeber:
op hat den vollständigen Quellcode freigegeben und data.txt
,其中包含cr
lf
字符(有关该字符的详细信息)。这意味着必须使用 rstrip
verwendet, das cr
lf
-Zeichen enthält (Details zu diesem Charakter). Dies bedeutet, dass diese Zeilen mit der Methode rstrip
gestreift werden müssen.
In diesem Fall ist nur die check_id
-Funktion relevant, daher teile ich nur die geänderte Funktion:
def check_id(): with open('data.txt', 'r') as f: ad = 0 for i in f: # The cr and lf characters should be removed from line. Please see the above reference for details. if i.rstrip() == "-------------------------": ad += 1 return str(ad) result = check_id() print(result). # Result is 4
Das obige ist der detaillierte Inhalt vonPython-Schleifen funktionieren nicht mit readlines(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!