我不明白为什么我无法在python中获得readline函数以在该程序中工作。我究竟做错了什么?

时间:2019-11-16 21:53:10

标签: python

在此程序中,我想将单独的行保存到变量中,但是当我尝试打印变量时,它仅返回一个空格,而不是文件中该行的内容。抱歉,我对编程很陌生

file=open('emails.txt','w+')
while True:

    email=input('pls input your email adress: ')
    file.write(email)
    file.write('\n')
    more=input('would you like more emails to be processed? ')
    if more == 'yes' or more == 'ye' or more == 'y' or more == 'yep' or more == 'Y':
        continue

    elif more == 'no' or more == 'nah' or more == 'n' or more == 'N' or more == 'nope':
        file.close()
        print('this is the list of emails so far')
        file=open('emails.txt','r')
        print(file.read()) #this reads the whole file and it works
        email_1=file.readline(1) #this is meant to save the 1st line to a variable but doesn't work!!!
        print(email_1) #this is meant to print it but just returns a space
        file.close()
        print('end of program')

3 个答案:

答案 0 :(得分:0)

首先,您应该使用with处理文件。

第二,打开文件进行打印并读取其所有内容:print(file.read())

此行之后,光标位于文件的末尾,因此,下次尝试从文件中读取内容时,将得到空字符串。

要修复它,您几乎没有其他选择。

第一个选项:

添加file.seek(0, 0)可以将光标移回文件的开头,因此当您执行file.readline时,您将真正读取文件行。

此外,file.readline(1)应该更改为file.readline()

第二个选项:

只需将所有文件内容读入列表中,打印出来,然后打印列表中的第一项(文件的第一行...)

file = open('emails.txt', 'r')
content = file.readlines()
print(*content, sep='')
email_1 = content[0] 
print(email_1)  

答案 1 :(得分:0)

如上面的第一条评论所述,file.read()调用将您的文件指针移动到文件的末尾,因此没有剩余的数据可供readline()读取。

而且,您正在调用readline(1),它将读取一个字节,而不是一行。

答案 2 :(得分:0)

好吧,我会尝试使用with

所以尝试像这样实现它:

> with open('emails.txt','w+') as output_file:  
   while True:
    # and then rest of your code