我目前正在学习如何使用Python编程,而我真的不理解“ open()”函数是如何工作的。我有点知道如何使用它,但是我不太了解它。我主要要问的问题是:使用“ open()”函数时后台发生了什么,将其分配给变量时发生了什么?
进行研究对我几乎没有帮助。我所了解的唯一一件事是,当将“ open()”函数分配给变量时,文件对象将分配给该变量,该对象是一堆方法和变量。但是,对此进行更多研究并没有帮助我。这些方法和变量具体是什么?
我尝试进行测试以了解更多信息,但这给我留下的问题多于答案。例如:
当您在同一文件上执行“ .read()”并分配给2个不同的变量时,只有第一个“ .read()”实际上会将文件中的内容正确分配给第一个变量,而第二个不会分配任何东西。那里发生什么了?以下代码显示了此问题:
makeFile = open("test.txt","w")
makeFile.write("Hello!")
makeFile.close()
makeFile = open("test.txt","r")
read1 = makeFile.read()
read2 = makeFile.read()
print("first variable:",read1)
print("second variable:",read2)
makeFile.close()
input("Press enter to finnish program")
以下是输出:
first variable: Hello!
second variable:
Press enter to finish program
我知道我可以简单地将“ read1”分配给“ read2”,但是为什么不给第二个变量分配任何东西呢?我希望它在两个变量中输出相同的字符串,但只显示一次,然后另一个不显示任何内容。
很抱歉,如果我问了太多问题,但是如果有人解释了使用“ open()”函数时发生的情况以及该示例为何不起作用,我将为我提供很多帮助出席。
答案 0 :(得分:2)
这里的关键是理解分配r1和r2时的操作。您将调用read方法两次,但是第二次已将文件读取到末尾,没有其他内容可读取了。此方法的所有后续调用都将不返回任何内容-这不是无状态操作。如果您观察到没有分配变量的结果是相同的,也许会有所帮助。
makeFile = open("test.txt","w")
makeFile.write("Hello!")
makeFile.close()
makeFile = open("test.txt","r")
print("first variable:",makeFile.read())
print("second variable:",makeFile.read())
makeFile.close()
input("Press enter to finnish program")
但是,如果您先向.read()添加另一个调用,则两次打印都不会得到任何结果:
makeFile = open("test.txt","w")
makeFile.write("Hello!")
makeFile.close()
makeFile = open("test.txt","r")
makeFile.read()
print("first variable:",makeFile.read())
print("second variable:",makeFile.read())
makeFile.close()
input("Press enter to finnish program")
答案 1 :(得分:2)
最初,“光标”位于文件的开头。 if form_tc.is_valid() and form_ts.is_valid():
form_tc.save()
form_ts.save()
将光标移到文件末尾(因为它会读取文件的所有内容)。当您第二次执行makeFile.read()
时,光标仍位于文件的末尾,因此没有要读取的内容。
您可以使用makeFile.read()
函数来移动光标。