繁体   English   中英

写入文件仅在第一次执行时换行

[英]Writing to file gives only new line on first execution

第一次执行该程序时,除换行外,生成的文件中没有任何内容。 但是第二次执行它时,它正确地写入了“ 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()

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

f.seek(f.tell())

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

适应您的问题后,您必须先使用bhaarat_read = bhaarat.read()读取文件,然后再使用bhaarat.write('\\n23. English\\n')对其进行写入,然后调用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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM