Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Gelung Python tidak berfungsi dengan readlines()

Gelung Python tidak berfungsi dengan readlines()

王林
王林ke hadapan
2024-02-06 09:54:04553semak imbas

Python 循环不适用于 readlines()

Kandungan soalan

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.


Jawapan betul


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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam