簡體   English   中英

如何使用python在已經存在的文本文件中寫入標題

[英]how to write a header in already existent text file with python

我創建了一個將學生數據附加到文本文件的函數。 創建該函數后,我想添加一個標題,以便用戶知道數據代表什么。 但是現在,標題確實添加到文件中,但該功能不再添加學生的數據......

這是我的代碼:

FirstName =  []
LastName = []
Class = []
Adress = []
Math = []
Science = []
English = []
Dutch = []
Arts = []



def add_records(filename, FirstName, LastName, Class, Adress, Math, Science, English, Dutch, Arts):


    header = "First Name, Last Name, Class, Adress, Math Grade, Science Grade, English Grade, Dutch Grade, Arts Grade"

    x= input("Enter First Name:")
    FirstName.append(x)


    y=input("Enter Last Name:")
    LastName.append(y)

    b=input("Enter Student's Class:")
    Class.append(b)

    o=input("Enter Address:")
    Address.append(o)


    z=int(input("Enter Math Grade:"))
    Math.append(z)


    w=int(input("Enter Science Grade:"))
    Science.append(w)


    h=int(input("Enter English Grade:"))
    English.append(h)


    p=int(input("Enter Dutch Grade:"))
    Dutch.append(p)

    v=int(input("Enter Arts Grade:"))
    Arts.append(v)



    f = open(filename, 'r')
    lines = f.readlines()


    if lines[0] in f == header:

        f=open(filename,"a+")




        for i, j, r, k ,l, m, n, o, p  in zip(FirstName, LastName, Class, Adress, Math, Science, English, Dutch, Arts):

                print(i,j,k,r,l,m,n,o,p)
                a=f.write(i + ' ' + j + ' ' + r + ' '+ k + ' ' + str(l) + ' ' + str(m) + ' ' + str(n) + ' ' + str(o) + ' ' + str(p) + "\n")

        f.close()

    else:

        file = open(filename, 'a+')
        file.write(header + a + "\n")
        file.close()
        f.close()
add_records("mytextfile.txt",FirstName,LastName,Class,Adress,Math,Science,English,Dutch,Arts)

有人可以向我解釋為什么嗎?

文本文件沒有標題。 如果你想要一個真正的標題,你需要一個更復雜的格式。 或者,如果您只需要像標題一樣的東西,那么您需要確定頁面垂直適合多少個字符,然后每 N 行打印標題。

對於水平對齊,請使用可以與 format() 一起使用的額外標記。 舉個例子:

print('{a:^8}{b:^8}{c:^8}'.format(a='this', b='that', c='other'))
this    that   other 

其中 ^8 表示我希望字符串以 8 個字符為中心。 顯然,您必須選擇(或推導)適用於您的數據的值。

如果尚未創建mytextfile.txt ,則會拋出錯誤。 如果您已經創建了空的mytextfile.txt ,那么它仍然會拋出錯誤,因為沒有lines[0] (它是一個空文件)。

而且你的if語句也有問題,你應該寫:

if lines[0].strip() == header

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM