文件操作主要有三步:
1.获取文件路径
2.打开文件
3.关闭文件
其中文件的路径很重要,如若路径不正确将会出现异常。
#文件操作(注意:最好把读写操作分开,即分别用w和r模式操作文件,)
import os
file = os.path.join(os.path.dirname(__file__),'1.py')#文件(需要包含路径才能正常操作文件)
with open(file,'a+') as f:
# f.truncate(0)#清空文件内容
for i in xrange(8):
f.write(str(i))
# f.seek(3)#移动读取位置到3
f.write('hello world')
f.seek(5)#移动到位置5,位置是按索引来的,以0开始
print u'seek移动后的当前位置:',f.tell()
f.write('t')#由于文件是以a+模式(a表示追加模式,+表示读/写模式)打开,所以对文件进行写操作时,写入的东西将会追加到最后
#此时f.seek(5)失灵
print u'写操作后的当前位置:',f.tell()
# print type(f.tell())
f.seek(0)#移动到0位置,即开始的位置
print f.read(5)#此时,读取的内容将会以追加的形式写入到文件中,使用f.seek(0)移动到0位置,则是正常读取,否则读取的内容会写入到文件中
print f.read(2)#读取的字符(字节)的最大值为2,当读取的字符最大值大于被读取的文件的最大值时不会出现错误
print f.tell()#返回当前文件的位置
结果:
seek移动后的当前位置: 5
写操作后的当前位置: 20
01234
56
7
#使用文件迭代器, 可以直接迭代文件
f = os.path.join(os.path.dirname(__file__),'file.txt')
for i in open(f):
print i
结果:
01234567hello worldt
#使用fileinput实现懒惰行迭代
import fileinput
f = os.path.join(os.path.dirname(__file__),'file.txt')
for i in fileinput.input(f):
print i
结果:
01234567hello worldt
复制文件可以使用shutil模块的copyfile函数
#使用shutil模块的copyfile函数复制文件
import shutil
shutil.copyfile('file.txt','file2.txt')#复制file.txt文件到file2.txt,若file2.txt不存在,不会引发异常,会创建文件
删除文件,使用os模块的remove函数
#删除文件
import os
os.remove('file.txt')