为什么我的脚本不打印hello.txt文件的第一行?

时间:2018-04-27 21:15:44

标签: python python-3.x

我用Python编写了一个脚本,然后在命令行中运行它。输出的第一部分是我的预期。但是,它不打印第一行,因为我想要readline()。我被问到第二个问题,但当我回答“是”时,它会打印一个空行。当我删除if语句和第一个问题时它工作正常,但我无法使用if语句。 这是脚本:

script, filename = argv

print("I'm going to open the file.")
txt1 = open(filename) 
question1 = raw_input("Do you wanna see the content? ")


if (question1 == "yes" or question1 == "Yes"):
   print(txt1.read())

question2 = raw_input("Do you want me to read just the first line? ")
if (question2 == "yes" or question2 == "Yes"):
   print(txt1.readline())

提前致谢。

2 个答案:

答案 0 :(得分:1)

open()返回的文件对象会跟踪文件的位置。您对txt1.read()的第一次调用会读取整个文件,并将您在文件中的位置提升到最后。如果要重置回文件的开头,可以在再次从文件中读取之前执行txt1.seek(0)

答案 1 :(得分:1)

您可能想要

txt1.seek(0)

两次读取之间。这会将您当前的位置重置为文件的开头。

更好的风格是

if (question1 == "yes" or question1 == "Yes"):
    with open(filename) as txt1:
        print(txt1.read())