Python文件操作方法大总结

时间:2021-11-25 01:10:55

文件操作必不可少的是open函数:对文件读写之前,需要先打开文件,获取文件句柄

注意:open() file() 尽量使用open(),Python3以后不支持file()了

1、open方法原型解释

1
open (file_name[,access_mode][,buffering])

(1)参数说明

file_name:一个包含了你要访问的文件路径及文件名称的字符串值。尽量使用绝对路径

access_mode:打开文件的方式:这个参数是非强制的,默认文件访问模式为只读(r)

r,只读

w:写之前会清空文件的内容

a:追加的方式,在原本内容中继续写

buffering:先写到缓存中

如果buffering的值被设置为0,就不会有寄存;如果值为1,访问文件时会缓存行;如果值位大于1的整数,表明了这就是寄存区的缓冲大小;如果取负值,寄存区的缓冲大小则为系统默认。该参数也是非强制性的。

(2)返回值

该语句表示返回的File_object是一个指向文件的指针(一个文件对象)文件句柄。当以只读模式(r)打开一个不存在的文件时,就会报IOError异常(文件不存在),但如果是以写或追加模式(w/a/a+)打开一个不存在的文件时,默认会创建该文件,但如果是所在路径中有目录不存在,也会报IOError异常

 常用方法列表

操作 说明
os.getcwd() 得到当前工作目录,即当前Python脚本工作的目录路径
os.listdir() 返回指定目录下的所有文件和目录名
os.remove() 函数用来删除一个文件
os.removedirs(r"c\python") 删除多个目录
os.path.isfile() 检验给出的路径是否是一个文件
os.path.isdir() 检验给出的路径是否是一个目录
os.path.isabs() 判断是否是绝对路径
os.path.exists() 检验给出的路径是否真地存
os.path.split() 返回一个路径的目录名和文件名
os.path.splitext() 分离扩展名
os.path.dirname() 获取路径名
os.path.basename() 获取文件名
os.system() 运行shell命令
os.getenv() 与os.putenv() 读取和设置环境变量
os.linesep  给出当前平台使用的行终止符,Windows使用'rn',Linux使用'n'而Mac使用'r'
os.name 指示你正在使用的平台,对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
os.rename(old, new) 重命名:
os.makedirs(r"c:\python\test") 创建多级目录
os.mkdir("test") 创建单个目录
os.stat(file) 获取文件属性
os.chmod(file) 修改文件权限与时间戳
os.exit() 终止当前进程
os.path.getsize(filename) 获取文件大小
os.mkdir("file") 创建目录
shutil.copyfile("oldfile","newfile") 复制文件, oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
shutil.copytree("olddir","newdir") 复制文件夹, olddir和newdir都只能是目录,且newdir必须不存在
os.rename("oldname","newname") 重命名文件(目录),文件或目录都是使用这条命令
shutil.move("oldpos","newpos") 移动文件(目录)
os.remove("file") 删除文件
os.rmdir("dir") 删除目录, 只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删
os.chdir("path") 转换目录, 换路径
os.mknod("test.txt") 创建空文件

2、mode文件操作模式

r,w,a

r+可读可写

w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

模式列表


操作 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )


3、通过open获取到的文件句柄可以对文件作的其他操作

(1)fp.closed

判断文件是否已经关闭。返回true如果文件已被关闭,否则返回false

(2)fp.mode

输出读写模式。返回被打开文件的访问模式。

(3)fp.name:

返回文件的名称。

(4) fp.softspace

如果用print输出后,是否跟一个空格符,false不打印,true则打印。

(5)fp.close()

刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。

(6)flush()

把缓冲区中的内容持久化写到磁盘里

缓存区写满的情况,系统会自动调用flush()方法。

调用flush的时机:写入了多少长度的数据,或者间隔了多长的时间

如果没有flush(),持久化内容丢失

(7)next()

1
2
for  in  fp:
     print  i

把一个file用for...in file这样的循环遍历语句时,就是调用next()函数来实现。

1
2
3
4
5
fp = open (fileName, 'r' )
print  fp. next ()
print  fp. next ()
print  fp.fileno()  #判断当前操作的文件句柄是哪一个number
fp.close()