python读写文件,如何将内容添加在文件开头呢

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python读写文件,如何将内容添加在文件开头呢相关的知识,希望对你有一定的参考价值。

omefile.txt已经有内容了试过:f.open("somefile.txt",'r+')f.seek(0)开始f.write(),因为是写入多行数据,就会覆盖掉原有文件的一部分

fp.seek(offset[,whence])
#将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
参考技术A

# coding: utf8
import os

f = open('a.txt', 'r')
content = f.read()  # 读取文件内容
f_new = open('b.txt', 'w')
f_new.write('look !')  # 开头写入内容
f_new.write(content)    # 写入原文件内容
f.close()
f_new.close()
os.remove('a.txt')  # 移除老文件
os.rename('b.txt', 'a.txt') # 新文件命名为老文件名


·········································································

参考技术B eek( offset[, whence]) Set the file's current position, like stdio's fseek(). The whence argument is optional and defaults to 0 (absolute file positioning); other values are 1 (seek relative to the current position) and 2 (seek relative to the file's end). There is no return value. Note that if the file is opened for appending (mode 'a' or 'a+'), any seek() operations will be undone at the next write. If the file is only opened for writing in append mode (mode 'a'), this method is essentially a no-op, but it remains useful for files opened in append mode with reading enabled (mode 'a+'). If the file is opened in text mode (mode 't'), only offsets returned by tell() are legal. Use of other offsets causes undefined behavior. Note that not all file objects are seekable. 查看原帖>>本回答被提问者采纳

python教程:IO模块使用教程

1.简介

读写文件是常见的IO操作,python内置了读写文本的函数。

读写文件的模式描述如下:

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.读取文件

文本信息如下:

1读取文件的基本信息

# 只读方式打开文本文件
f = open(\'./readout.txt\', \'r\')
# 读取文件信息
print ("文件名: ", f.name)
print ("是否已关闭 : ", f.closed)
print ("访问模式 : ", f.mode)
print ("末尾是否强制加空格 : ", f.softspace)
# 关闭文件
f.close()

2一次性读取

 # 只读方式打开文本文件
 f = open(\'./readout.txt\', \'r\')
 # 一次性读取全部内容,不安全
 print (\'一次性全部读取:\\n\', f.read())
 f.close()

3多次读取

# 只读方式打开文本文件
f = open(\'./readout.txt\', \'r\')
# 文件长度
# print \'文件长度:\', len(f.read())
# 从文件的开头读取13个字节,超过文本长度则读取全部
print (\'第一次读取:\\n\', f.read(13))
# 继续读取4个字节
print (\'第二次读取:\\n\', f.read(4))
f.close()

4按行读取

# 只读方式打开文本文件
f = open(\'./readout.txt\', \'r\')
# 分行读取
print (\'读取第一行:\\n\', f.readline().strip())
print (\'读取第二行的4个字节:\\n\', f.readline(4))
f.close()

5file作为迭代器

# 只读方式打开文本文件
f = open(\'./readout.txt\', \'r\')
for index in range(3):
    # file自身作为迭代器
    line = f.next()
    print (line.strip())

6按行读取并存为list

# 只读方式打开文本文件
f = open(\'./readout.txt\', \'r\')
# 一次性读取所有行并且返回list
fileList = f.readlines()
# [\'line one\\n\', \'line two\\n\', \'\\xe4\\xb8\\xad\\xe6\\x96\\x87\\xe6\\xb5\\x8b\\xe8\\xaf\\x95\']
print (\'List列表:\\n\', fileList)
for line in fileList:
    # #去掉每行头尾空白
    print (line.strip())
f.close()

7读取二进制文件

 # 打开二进制文件,例如图片、视频
 f = open(\'./readpicture.jpg\', \'rb\')
 print (f.read())
 f.close()

3.写入文件

1写入文件的基本信息

# 只写方式打开文件,写入文本
f = open(\'./writein.txt\', \'w\')
# 读取文件信息
print "文件名: ", f.name
print "是否已关闭 : ", f.closed
print "访问模式 : ", f.mode
print "末尾是否强制加空格 : ", f.softspace
# 关闭文件
f.close()

2多种写入

\'\'\'
学习中遇到问题没人解答?小编创建了一个Python学习交流群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
\'\'\'
# 只写方式打开文件,写入文本
f = open(\'./writein.txt\', \'w\')
# 写入文本
f.write(\'line one\')
f.close()

# 只写方式打开文件,以序列方式写入
f = open(\'./writein.txt\', \'w\')
contentList = [\'line one \\n\', \'line two \\n\', \'中文测试 \\n\']
# 写入序列
f.writelines(contentList)
f.close()

4.其他函数 file.tell() 、file.seek(offset,[],whence)

# 以读写方式打开文件,以序列方式写入
f = open(\'./writein.txt\', \'w+\')
contentList = [\'line one \\n\', \'line two \\n\', \'中文测试 \\n\']
# 写入序列
f.writelines(contentList)
# 指针位置:file.tell()
print \'写入后指针所在位置:\', f.tell()
# 指针偏移:file.seek(offset[, whence])
# 前者为偏移量,后者为指针位置(默认0表示初始位置,1表示当前位置,2表示末尾位置)
f.seek(0)
print \'偏移后指针所在位置:\', f.tell()
print \'数据:\\n\', f.read()
f.close()

5.使用with语句配合IO操作

 with open(\'/path/to/file\', \'r\') as f:
       print f.read()

注:该种方式可以自动调用close()方法,避免出错!!!

以上是关于python读写文件,如何将内容添加在文件开头呢的主要内容,如果未能解决你的问题,请参考以下文章

python第八节

#Python 文件的读写

python教程:IO模块使用教程

python 文件操作

将文本和行添加到文件的开头(Python)

python文件