0

我第一次执行这个程序时,生成的文件除了换行之外没有任何内容。但是我第二次执行它时,它会正确写入“out.txt”,但第一次执行的新行仍然存在。为什么第一次不能正常工作?

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()
4

1 回答 1

0

这是 Windows 的问题。解决方法(参见 python 邮件列表)是使用

f.seek(f.tell())

在调用read()和使用其中一个选项打开write()的文件之间。f+

适应您的问题,您必须bhaarat.seek(bhaarat.tell())在第一次使用 读取文件之后bhaarat_read = bhaarat.read()和使用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()
于 2013-03-01T09:19:26.967 回答