我正在尝试制作一个不断询问字符串并将其输出到.txt文件的程序。如果没有while循环,它就可以正常工作,所以我不太确定这里出了什么问题。
infile = open('hardlopers.txt', 'a+')
i = 0
while i < 1:
naam = input('geef je naam:')
infile.write(naam)
答案 0 :(得分:4)
您的程序将永远运行。除非关闭(或使用flush()
明确告诉它),否则您要写入的文件不会“保存”(写入实际文件)。没有循环,程序将终止,这意味着文件已关闭并且您的更改已保存。
os.fsync(infile.fileno())
方法不一定总是保存文件。在这种情况下,您可以使用{{1}}。
答案 1 :(得分:3)
文件的内容不会立即写入硬盘。内容存储在文件内部缓冲区中,并最终提供给您的操作系统,进而决定何时将数据正确保留在haddrive上。
有关文件刷新(又称清空缓冲区到磁盘)的更多信息:How often does python flush to a file?
编写时最好使用with open(name, mode) as filehandle:
范例。
尝试:
with open('hardlopers.txt', 'a+') as infile:
while True:
naam = input('geef je naam:')
if naam:
infile.write(naam)
else:
break
# now its written - with open autocloses on leaving the block
with open("hardlopers.txt","r") as r:
t = r.read()
print("")
print(t)
输出:
geef je naam:a
geef je naam:b
geef je naam:c
geef je naam:d
geef je naam:
abced
请参见以下示例:reading-and-writing-files
答案 2 :(得分:1)
您只需要从while循环中break
,就可以将内容实际写入文件中。
infile = open('hardlopers.txt', 'a+')
i = 0
while i < 1:
naam = input('geef je naam:')
if naam == 'q':
i = 1 # break from the loop
else:
infile.write(naam)