Ia sepatutnya mengira bilangan baris "------------------------" tetapi ia juga tidak berkesan Anda boleh menggunakan print("ujian") yang tidak akan dipaparkan dalam konsol, ia akan sentiasa mengembalikan 0. Tetapi sebagai contoh cetakan baris("hai") berfungsi. Program ini tidak melihat gelung saya dan saya tidak tahu mengapa. :(
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)
Jika saya perlu menghantar kod lengkap untuk menyelesaikan masalah, sila tanya
Saya menukar mod "a+" kepada "r" supaya ia membaca baris dengan betul, dan ia betul, tetapi saya masih tidak dapat menyemak tatasusunan untuk mendapatkan bilangan baris. Jika anda mempunyai sebarang tekaan atau penyelesaian, sila tuliskannya.
EDIT: Berikut ialah kod lengkap untuk data.py saya dan teks dalam fail 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)
Kini ia adalah fail txt:
fugy hello hai bebra ------------------------- 0 ________________________ uha imna fsjfoe geso;rsevdn ------------------------- 0 # This one ________________________
Saya cuba membuat buku nota supaya saya boleh menulis nota dan membacanya. Padam func saya akan buat nanti. Ideanya adalah untuk menjadikan sifar ini lebih besar setiap kali anda menambah anotasi.
Saya rasa masalahnya ialah data.txt
文件(可能是空的,因为您提到 "test"
在控制台中不可见,这意味着该脚本不在 for
循环中运行,在其他word: lines
anda lelaran adalah panjang sifar).
Saya telah menulis kod yang berfungsi, anda boleh melihat kod dan fail ujian dengan output skrip di bawah.
Kod:
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
kandungan:
test_1 ------------------------- test_2 ------------------------- test_3 ------------------------- test_4
Ujian:
> python3 test.py hi test test test test test test test result: 0
Editor:
op berkongsi kod sumber lengkap dan menggunakan data.txt
,其中包含cr
lf
字符(有关该字符的详细信息)。这意味着必须使用 rstrip
, yang mengandungi aksara cr
lf
(Butiran tentang watak ini). Ini bermakna garisan ini mesti dijalurkan menggunakan kaedah rstrip
.
Dalam kes ini, hanya fungsi check_id
yang relevan, jadi saya hanya berkongsi fungsi yang diubah suai:
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
Atas ialah kandungan terperinci Gelung Python tidak berfungsi dengan readlines(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!