写入文件只在第一次执行时给出新行

2024-06-28 11:57:47 发布

您现在位置:Python中文网/ 问答频道 /正文

第一次执行这个程序时,结果文件中除了新行之外没有任何内容。但我第二次执行它时,它会写到顺序文件'没错,但是第一次执行的新行仍然存在。为什么第一次就不能正常工作?你知道吗

bhaarat = open('bhaarat.txt', 'r+')
bhaarat_read = bhaarat.read()

out = open('out.txt', 'r+')
out_read = out.read()

bhaarat_split = bhaarat_read.split()

for word in bhaarat_split:
    if word.startswith('S') or word.startswith('H'):
        out.write(word + "\n")

bhaarat.write('\n23. English\n')
print out_read
print bhaarat_read

bhaarat.close()
out.close()

Tags: 文件程序txt内容closeread顺序open
1条回答
网友
1楼 · 发布于 2024-06-28 11:57:47

这是Windows的问题。解决方法(see python mailing list)是使用

f.seek(f.tell())

在使用+选项之一打开的文件f上调用read()write()之间。你知道吗

根据您的问题,您必须在第一次用bhaarat_read = bhaarat.read()读取文件后调用bhaarat.seek(bhaarat.tell()),然后用bhaarat.write('\n23. English\n')写入文件。你的out也一样。你知道吗

在Python3中,这个问题是固定的,所以还有一个切换的理由:)


编辑 下面的代码适用于我。文件bhaarat.txtout.txt必须同时存在。你知道吗

bhaarat = open('bhaarat.txt', 'r+')
bhaarat_read = bhaarat.read()
bhaarat.seek(bhaarat.tell())
out = open('out.txt', 'r+')
out_read = out.read()
out.seek(out.tell())
bhaarat_split = bhaarat_read.split()

for word in bhaarat_split:
    if word.startswith('S') or word.startswith('H'):
        out.write(word + "\n")

bhaarat.write('\n23. English\n')
print out_read
print bhaarat_read

bhaarat.close()
out.close()

相关问题 更多 >