как написать заголовок в уже существующий текстовый файл с python - PullRequest
0 голосов
/ 30 марта 2020

Я создал функцию, которая добавляет данные ученика в текстовый файл. После создания этой функции я хотел добавить заголовок, чтобы пользователь знал, что представляют данные. Однако теперь заголовок действительно добавлен в файл, но функция больше не добавляет данные студента ...

Вот мой код:

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)

Может кто-нибудь объяснить мне Почему?

Ответы [ 2 ]

0 голосов
/ 30 марта 2020

В случае, если mytextfile.txt еще не был создан, он выдаст ошибку. Если вы уже создали пустой mytextfile.txt, то он по-прежнему выдает ошибку, потому что lines[0] (это пустой файл) нет.

И в вашем операторе if тоже есть проблема, вы должны написать :

if lines[0].strip() == header
0 голосов
/ 30 марта 2020

текстовые файлы не имеют заголовка. Если вы хотите настоящий заголовок, вам понадобится более сложный формат. В качестве альтернативы, если вам просто нужно что-то, что действует как заголовок, вам нужно выяснить, сколько символов помещается на вашей странице по вертикали, и печатать заголовок каждые N строк.

Для горизонтального выравнивания используйте дополнительные токены, которые вы можете использовать с format (). Как пример:

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

, где ^ 8 говорит, что я хочу, чтобы строка центрировалась по 8 символам. Очевидно, вы должны выбрать (или получить) значение, которое подходит для ваших данных.

...