python 文件常用操作

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']]

 读取列表                

原文地址:https://www.cnblogs.com/minyshi/p/8331370.html