一、基本的Python文件操作
-
创建和打开文件:
即Python内置的open()函数的使用方法,写法格式如下:
file = open('路径和文件名' [, 文件打开模式 [, 缓存大小 [, encoding='编码格式']]])
其中,文件打开模式的可选参数有:
值 说明 备注 r 以只读模式打开文件 文件必须存在 rb 以二进制只读模式打开文件 文件必须存在 r+ 以读写模式打开文件 文件必须存在 rb+ 以二进制读写模式打开文件 文件必须存在 w 以只写模式打开文件 文件存在则覆盖,不存在则创建 wb 以二进制只写模式打开文件 文件存在则覆盖,不存在则创建 w+ 以读写模式打开文件 文件存在则覆盖,不存在则创建 wb+ 以二进制读写模式打开文件 文件存在则覆盖,不存在则创建 a 以追加模式打开文件 文件存在则追加,不存在则创建 ab 以二进制追加模式打开文件 文件存在则追加,不存在则创建 a+ 以读写模式(追加)打开文件 文件存在则追加,不存在则创建 ab+ 以二进制读写模式(追加)打开文件 文件存在则追加,不存在则创建 缓存大小则需要传入一个非负整数,值为0表示不缓存,值为1表示缓存(默认),值大于1则表示为缓冲区的大小;
encoding参数注意需要把
encoding=
加上,默认使用GBK编码格式 -
关闭文件:
file.close()
由于文件打开之后要及时将其关闭,否则会出现意想不到的问题。另外,当Python在打开文件的过程中出现异常,将导致文件不能被及时关闭
为了避免此问题的发生,推荐使用with语句进行文件处理。当使用with语句打开文件时,无论是否抛异常,都能保证with语句执行完毕后关闭已经打开的文件,也省去了手动关闭文件的步骤with语句格式:
with open() as file: IO代码块
-
写入文件:
file.write(content)
-
读取文件:
-
file.read([size])
读取指定字符
需要传入size参数代表读取几位字符。默认读取文件的所有内容。由于默认是从头开始读的,可以使用seek(offset [, whence])
方法将文件指针移动到一个具体的位置(offset指跳过的字符个数(中文2个字符,英文和数字1个字符),whence指从文件哪里开始:0表示从文件头部开始(默认),1表示从当前位置开始,2表示从文件尾部开始) -
file.readline()
逐行读取
当文件过大时使用read()方法很容易内存不足,所以通常会逐行进行读取 -
file.readlines()
读取全部行(较少使用)将文件中所有的行读取处理,返回一个字符串列表
-
二、Python目录操作
Python中所有的目录相关操作都需要使用到os模块和os.path模块
-
os模块常用的属性及函数有:
属性或函数 说明 os.name 获取操作系统类型。 nt
为Windows;posix
为Linux、Unix或MacOSos.linesep 获取当前操作系统上的换行符 os.sep 获取当前操作系统上的路径分隔符 os.getcwd() 返回当前的工作目录 os.listdir(path) 返回指定路径下的文件和目录信息 os.mkdir(path[,mode]) 创建目录 os.mkdirs(path1/path2…[, mode]) 创建多级目录 rmdir(path) 删除目录 removedirs(path1/path2…) 删除多级目录 chdir(path) 把path设置为当前工作目录 walk(top[,topdown[,onerror]]) 遍历目录树,返回一个包含所有路径名、目录列表和文件列表的元组 -
os.path模块的常用目录操作函数有:
函数 说明 os.path.abspath(path) 获取某个文件或目录的绝对路径 os.path.exists(path) 判断某个文件是否存在 os.path.join(path,name) 将目录和文件名拼接成一个字符串 os.path.splitext() 将目录与文件名分开 os.path.basename(path) 从一个目录中提取出文件名 os.path.isdir(path) 用于判断是否为有效路径
三、Python高级文件操作
os模块中包含的高级文件操作函数:
函数 | 说明 |
---|---|
access(path,accessmode) | 获取对文件的访问权限。accessmode取值为R_OK(读),W_OK(写),X_OK(执行)或F_OK(存在),若有则返回1,无则返回0 |
chmod(path,mode) | 修改path指定的文件访问权限 |
remove(path) | 删除指定路径所在的文件 |
rename(filename1,filename2) | 将文件名filename1改为filename2 |
stat(path) | 返回path指定文件的信息 |
startfile(path[, operation]) | 使用关联的应用程序打开path指定的文件 |