上行到文件的开头
我可以使用单独的文件来做到这一点,但是如何在文件的开头添加一行?
f=open('log.txt','a') f.seek(0) #get to the first position f.write("text") f.close()
由于文件以追加模式打开,因此从文件末尾开始写入。
在模式'a'
或'a+'
,即使在当前write()
函数被触发的时刻,文件的末尾也会进行写操作,即文件的指针不在文件末尾:在任何写作之前移动到文件的末尾。 你可以用两种方式做你想做的事。
第一种方法 ,如果没有问题将文件加载到内存中可以使用:
def line_prepender(filename, line): with open(filename, 'r+') as f: content = f.read() f.seek(0, 0) f.write(line.rstrip('\r\n') + '\n' + content)
第二种方式 :
def line_pre_adder(filename, line_to_prepend): f = fileinput.input(filename, inplace=1) for xline in f: if f.isfirstline(): print line_to_prepend.rstrip('\r\n') + '\n' + xline, else: print xline,
我不知道这个方法是如何工作的,如果它可以在大的文件上使用。 传递给input的参数1允许重写一行代码; 为了进行就地操作,必须向前或向后移动以下行,但是我不知道机制
在我熟悉的所有文件系统中,你不能在原地进行。 您必须使用辅助文件(您可以重命名为原始文件的名称)。
把代码放在NPE的答案中,我认为最有效的方法是:
def insert(originalfile,string): with open(originalfile,'r') as f: with open('newfile.txt','w') as f2: f2.write(string) f2.write(f.read()) os.rename('newfile.txt',originalfile)
没有任何内置函数可以做到这一点,因为这样做效率非常低。 每次在前面添加一行时,都需要将文件的现有内容向下移动。
有一个Unix / Linux实用程序tail
可以从文件的末尾读取。 也许你可以在你的应用中find有用的东西。