如何在python中将字符串放在文件的前面

时间:2016-01-06 23:29:54

标签: python

这是我的代码:

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

原始文件内容如下:

白鸽必须航行多少海 在她睡在沙滩之前

结果如下:

白鸽必须航行多少海 在她睡在沙滩上之前 一个人必须走多少条道路 在他们称他为男人之前 一只白鸽必须载多少海 在她睡在沙滩之前

预期产出:

一个男人必须走多少条道路 在他们称他为男人之前 一只白鸽必须载多少海 在她睡在沙滩之前

2 个答案:

答案 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运算符

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

我在手机上如此解释,如果解释是一些简短而又缺乏代码的话。明天可以更新。