python文件操作与路径
I.打开和关闭文件
方法1:打开一个文件,返回一个操作的句柄
file = open(指定文件名,打开的模式['r'或'r+'或'w'或'w+'或'a+'],编码方式(encoding='utf-8')) # 打开文件 file.read()或者file.write(写入的内容) # 读写操作 f.close()# 关闭文件
方法2:开启open返回文件句柄对象的上下文管理器(执行完with的代码语句之后,会自动关闭文件)
with open(file="指定文件", mode="打开的模式", encoding="utf-8") as f: c = f.read()或f.write(写入的内容) print(c)
- r:只读 ----如果被打开的文件不存在,直接报错【rb:二进制允许读入文件】
- 默认只读r模式,若写入内容,会报错:io.UnsupportedOperation: not writable
- r+:可读可写
- 先写,从头开始覆盖写 ;读光标之后的内容 ;读写跟着光标走
- 写入中文,注意编码格式encoding=utf-8
- w:只写 ---(清空文件中原有的内容),被打开的文件不存在,会自动创建一个【wb:覆盖写入二进制文件】
- write()直接写 writeline()写单行 writelines()写多行 wb:二进制允许写入文件
- w:读会报错:io.UnsupportedOperation: not readable
- w+:可读可写
- 注意1: 不管是w,还是w+,如果文件存在,直接清空,再重写;如果文件不存在,则新建一个文件,然后写
- a+:追加(不清空),可读可写 【ab:二进制允许追加文件】如果文件存在,写到后面;如果文件不存在,则新建一个文件,然后写
- 注意2:二进制模式一般用于读图片,视频等,写测试报告:wb模式
# 读取r(重点掌握) file = open("D:\Test1\\test.txt",'r',encoding='utf-8') res = file.read() # read()读取全部,进行完一次读取操作后,光标到文末 readline()读取单行 readlines()读取多行 print(res) # 追加a(重点掌握) file = open("D:\Test1\\test1.txt",'a+',encoding='utf-8') file.write("\n等待过年回家") # 可读可写r+ file = open("D:\Test1\\test1.txt",'r+',encoding='utf-8') file.write('kite你好') # 写w file = open("D:\Test1\\test1.txt",'w',encoding='utf-8') file.write('hello') # (write()直接写 writeline()写单行 writelines()写多行,换行位置加\n) # 可读可写w+ file = open("D:\Test1\\test1.txt",'w+',encoding='utf-8') file.write('棒棒哒')
II.路径
- 新建目录/文件夹 : os.mkdir('文件名')
- 跨级新建目录 :【 相对路径 】 os.mkdir('kite/v1') 【 绝对路径 】os.mkdir("D://Test3/base_python/Kite/v2")
(2) 删除文件
- 一级一级的删除 : os.rmdir("kite/v1")
- 不推荐一次性删除 : os.rmdir("kite") 报错:OSError:[WinErrorr 145]目录不是空的
(3) 获取路径
- 获取当前工作目录 : path = os.getcwd() 【 具体到最后一级目录 】
- 获取当前文件的绝对路径 : path = os.path.realpath(file) 【 具体到模块名 】
- 获取文件/目录所在的路径 的父级目录:
# 方法1 dir = os.path.dirname(__file__) # 当前文件上级目录 # 方法2 BASEDIR = os.path.dirname(dir) # 当前文件的上上级目录
- 切换工作路径:
- + 或 join : os.path.join(os.getcwd(),路径2)
(5) 判断文件
- 判断是否为目录 : os.path.isdir(com_path)
- 判断是否为文件 : os.path.isfile(com_path)
- 判断文件是否存在 : os.path.exists(文件名)
(6) 罗列文件路径 : os.listdir(path)
(7) 当前文件的绝对路径:__file__
(8)__name__: 如果当前文件做程序的启动文件中,它的值是 _main_