这是我的代码:
>>> p = open(r'/Users/ericxx/Desktop/dest.txt','r+')
>>> xx = p.read()
>>> xx = xx[:0]+"How many roads must a man walk down\nBefore they call him a man" +xx[0:]
>>> p.writelines(xx)
>>> p.close()
原始文件内容如下:
白鸽必须航行多少海 在她睡在沙滩之前
结果如下:
白鸽必须航行多少海 在她睡在沙滩上之前 一个人必须走多少条道路 在他们称他为男人之前 一只白鸽必须载多少海 在她睡在沙滩之前
预期产出:
一个男人必须走多少条道路 在他们称他为男人之前 一只白鸽必须载多少海 在她睡在沙滩之前
答案 0 :(得分:5)
你必须在阅读和写作之间“回放”文件:
p.seek(0)
整个代码看起来像这样(带有其他细微变化):
p = open('/Users/ericxx/Desktop/dest.txt','r+')
xx = p.read()
xx = "How many roads must a man walk down\nBefore they call him a man" + xx
p.seek(0)
p.write(xx)
p.close()
答案 1 :(得分:1)
添加@messas答案,
在寻求在前面添加数据的同时,如果您在任何时候缩短xx
,也可以在文件末尾留下旧数据。
这是因为p.seek(0)
将输入指针放在文件开头的文件中,任何.write()
操作都会覆盖内容。但是,与文件中已存在的内容相比较短的内容将导致最终留下的旧数据,而不是覆盖。
为避免这种情况,您可以使用, 'w')
作为第二次打开参数打开和关闭文件两次,或者存储/获取文件内容长度并填充新内容。或者将文件截断为新的所需长度。
要截断该文件,只需在您编写完数据后添加p.flush()
即可。
with open('/Users/ericxx/Desktop/dest.txt','r+') as p:
xx = p.read()
xx = "How many roads must a man walk down\nBefore they call him a man" + xx
p.seek(0)
p.write(xx)
p.flush()
我在手机上如此解释,如果解释是一些简短而又缺乏代码的话。明天可以更新。