1.打开文件
open()打开文件并返回文件对象,参数很多,一般用前两个,open(file,mode)。file可以是文件名或者文件目录下的文件名,mode为打开的方式,可以是只读、写入、追加写入、可读可写等等。
打开某个文件,需要知道该文件的目录,或者该文件就在当前的工作目录下。
(1)包含目录的文件名(不修改当前工作目录)
>>> f=open('E:/python/record.txt') #或者f=open(r'E:python ecord.txt')
#或者f=open('E:\python\record.txt') >>> f.read()
(2)文件名(修改当前的工作目录)
import os #插入os模块
os.getcwd() #查询当前工作目录
os.chdir('E:python') #更改当前工作目录
os.getcwd() #查询当前工作目录,发现修改成功
f=open('record.txt') #打开文件返回赋值到f
f.read() #读取文件
2.文件读取和定位(基于文件对象的方法)
文件是基于定位读取的。
read():开始读取时没有设置参数,则从当前定位到末尾全部读取出来。
readline():读取当前指针位置向后的该行。
tell():当前文件指针的位置。
seek(offset,from):移动指针,从from处向后移动offset个字节,from取值0(起始)或1(当前)或2(末尾)。返回指针所在位置。
文件读取的指针不会自动归位,上面所有的操作具有连续性。每次读取时需要重新定位。
#record.txt文件内容为411 f=open(r'e:python ecord.txt) f.read() #‘411’ f.tell() #3 f.read() #'' f.seek(1,0) #1 f.read() #'11' f.seek(0,0) #0 for each in f: print(each) #411
3.文件写入
写入需要在打开文件时进行设置为'w'(覆盖)或'a'(末尾添加)。若用别的模式打开,需要关闭后再开,不然会出错。
对象方法有write(str)和writelines(seq)
f.close() #接2继续 f=open('record.txt','w+') #写读模式打开 f.write('1225') #返回4 f.seek(0,0) #写入后指针在末尾,读取前重新归零 f.read() #'1225'
4.OS模块
该模块用于访问系统文件。
import os os.getcwd() #获取当前工作目录 os.chdir(‘e:\python\’) #更改当前工作目录为E:phthon os.listdir() #列出当前目录下的文件和子目录 os.mkdir('test') #在当前目录下创建新文件夹test os.makedirs(r'123') #创建多层目录 os.remove('record.txt') #删除文件 os.removedirs(r'123') #删除多层文件夹 os.rename('record.txt','r.txt') #文件或文件夹重命名 os.system('calc') #调用计算器
walk(top)用于遍历所有的子文件和文件夹,返回的是元组(路径,文件夹,文件名)
os.chdir(r'e:/') for i in os.walk('python'): print(i)
#('python', ['s'], ['1.gif', '1.jpg', '27.py', '28.py', 'p103.py', 'p14_1.py', 'p15.py', 'record.txt'])
('python\s', [], [])
os模块中的path,可以针对的路径的操作
os.path.basename(r'a ecord.txt') #'record.txt' 得到路径中的文件名 os.path.dirname(r'a ecord.txt') #'a\b' 得到路径中的路径 os.path.join(r'a est','record.txt') #'a\b\test\record.txt' os.path.split(r'a ecord.txt') #('a\b', 'record.txt') os.path.splitext(r'a ecord.txt') #('a\b\record', '.txt')
getatime()获取文件访问时间,getctime()获取文件创建时间,getmtime()获取文件修改时间
time模块可以对时间进行换算
os.chdir('e:/python/') print('record,txt 被修改的时间是:',time.strftime('%d %b %Y %H:%M:%S',time.localtime(os.path.getmtime('record.txt'))))
#record,txt 被修改的时间是: 23 Jan 2018 08:43:53
5.pickle模块
pickle的功能就是把你上次计算得到的数据保存起来,当你需要使用这些数据时,直接通过reload把数据恢复了就行。这样不用重复计算,也不用转换数据格式。
import pickle mlist=[123,3.14,'欢欢欢',['another list']] pfile=open('e:/python/list.pkl','wb') #open可新建文件 pickle.dump (mlist,pfile) #将列表保存到文件中 pfile.close()
import pickle pfile=open('e:/python/list.pkl','rb') #打开读取文件 mlist=pickle.load(pfile) #载入pickle文件 print (mlist)
#[123, 3.14, '欢欢欢', ['another list']]
读取列表