Saya mengalami masalah dengan kode ini. Sepertinya hal yang sederhana, tetapi untuk beberapa alasan apa pun yang saya lakukan itu tidak berhasil.

Saya mencoba membaca baris tertentu dari file dan jika baris itu kosong, ia mencetak kesalahan. Masalahnya adalah kode tidak berfungsi dan terus mengembalikan baris yang sama meskipun ada sesuatu di baris itu.

Untuk lebih spesifik tentang apa yang harus dilakukan, file hanya memiliki satu baris di awal. "Daftar".

Setelah itu yang lainnya kosong. Jika saya mencetak apa yang ada di file itu mengembalikan 'Daftar \n'.

Jadi, saya mencoba memeriksa apakah baris kedua (indeks 1) kosong dan kemudian mencetak kesalahan Saya mencoba melakukan ini dengan variabel lines = [1], tetapi tidak berhasil. Ini tautan ke apa yang saya coba lakukan dengan lines = [1] https: //www.kite.com/python/answers/how-to-read-specific-lines-of-a-text-file-in-python

with open("file.txt", "r") as f:
    lines = f.readlines()
    for line in lines:
        if line == "List: \n" + "\n":
            print("\nThere are no lists!")
        else:
            #Do something
0
Joe 4 Januari 2021, 23:02

3 jawaban

Jawaban Terbaik

Tepat sebelum if line == "List: \n" + "\n" Anda dapat print(repr(line)) dan melihat bahwa itu bukan nilai yang Anda cari. lines adalah daftar baris dan akan memiliki paling banyak satu karakter baris baru dan di akhir baris. Baris terakhir mungkin tidak memiliki baris baru tergantung apakah file diakhiri dengan satu baris.

Sebaliknya, cari saja isi satu baris. Penghapusan baris berhubungan dengan baris baru dan spasi putih yang tidak nyaman di akhir dan membuat kesalahan kecil dalam file.

with open("file.txt", "r") as f:
    lines = f.readlines()
    if not lines or lines[0].strip() != "List:":
        print("Invalid file")
    elif len(lines) < 2 or not(lines[1].strip()):
        print("\nThere are no lists!")

Anda tidak perlu membaca seluruh file untuk melakukan ini. zip menggabungkan dua koleksi, berhenti di terpendek. memanfaatkan bahwa Anda bisa

with open("file.txt", "r") as f:
    lines = [line.strip() for _, line in zip(range(2), f)]
    if not lines or lines[0] != "List:":
        print("Invalid file")
    elif len(lines) < 2 or not(lines[1].strip()):
        print("\nThere are no lists!")
1
tdelaney 4 Januari 2021, 20:22

Karena baris Anda dimulai dengan istilah "Daftar", Anda dapat mencoba

   with open("file.txt", "r") as f:
           lines = f.readlines()
           for line in lines:
               if line.startswith("List"):
                  # Do smth
               else:
                  #empty lines

Perbarui:

Atau Anda dapat menggunakan

        if line and line.isspace():
            #empty
        else :
            #Not empty
1
Sahil_Angra 4 Januari 2021, 20:28
def foo():
    file = open('file.txt', 'r')
    content = file.readlines()
    j = 'List' #or word you are looking for
    for i in range(len(content)):
    if i == 5 and j not in content[i]: # 5 - the 5th line in the txt
        return False # or do smth
    else:
        return True # or do smth
0
Octavian 4 Januari 2021, 20:18