其中目录的操作需要引入os模块:
import os
操作文件和目录的函数一部分放在os模块中,一部分放在os.path模块中。
1、目录操作方法
1.1 查看当前目录
import osprint(os.getcwd()) #查看当前目录
输出:
>>>d:\code
1.2 返回指定目录下的所有文件
import ospath = rd:\codeprint(os.listdir(path))
会以列表的形式,返回所有文件
输出:
>>>['.idea', '4.py', 'log', 'test.txt', 'venv', '函数.py', '基本数据类型.py','文件读写.py', '输入和输出.py']
1.3 目录创建、重命名、删除
import ospath = rd:\code# 在当前目录d:\code下创建目录os.mkdir(test) #方式1:直接创建testos.mkdir(rd:\code\test) #方式2:输入完整目录进行创建# 重命名刚刚创建的目录os.rename(test, testpy)# 删掉刚刚创建的目录os.rmdir(testpy) #方式1:直接删除testos.rmdir(rd:\code\testpy) #方式2:输入完整目录进行删除
1.4 判断目录是否存在
import ospath = rd:\code#判断是否是目录print(os.path.isdir(path))#判断目录是否存在print(os.path.exists(path))
1.5 目录拼接、拆分
import os#目录拼接newpath = os.path.join(rd:\code\test, 'test.txt')print(newpath)
#目录拆分path = os.path.split(rd:\code\test\test.txt)print(path)
#获取文件扩展名txtname = (os.path.splitext(rd:\code\test\test.txt))print(txtname)print(txtname[1])
输出:
>>>
>>>d:\code\test\test.txt
>>>('d:\\code\\test', 'test.txt')
>>>('d:\\code\\test\\test', '.txt')
>>>.txt
2、打开文件/关闭文件
文件的打开和关闭用open()和close()来实现
open()函数主要参数介绍:
参数file:文件路径
参数mode:打开方式,常用的mode有
r 以只读的方式打开文件,文件读取光标会放到文件的开头
w 打开一个文件,只用于写入,如果文件存在则打开文件,写入的内容会覆盖原内容,如果文件不存在,则新生成一个文件。
a 打开一个文件用于追加。如果文件存在,则文件读写光标会放到文件的末尾,新写入的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
+ 打开一个文件进行更新(可读可写)。
b 二进制模式。
还有r+、w+、a+、rb、wb、ab等。可自行参考官方文档。
参数encoding:编码方式 (encoding=utf-8一般都是utf-8)
errors:错误处理 (errors=ignore表示忽略错误)
path = rd:\code\test.txtf = open(path, r)#f = open(path, r, encoding=utf-8, errors=ignore)f.close()
3、读写文件
3.1 read() 读取文件内容
path = rd:\code\test.txtf = open(path, r)txt = f.read() #读取文件全部内容print(txt)f.close()
3.2 read(n) 读取指定字符数
path = rd:\code\test.txtf = open(path, r)txt = f.read(2) #读取指定字符 -1 表示读取全部内容print(txt)f.close()
3.3 readline() 读取整行
path = rd:\code\test.txtf = open(path, r)txt = f.readline() #读取整行print(txt)f.close()
3.4 readlines() 读取所有行并返回列表
path = rd:\code\test.txtf = open(path, r)txt = f.readlines() #读取所有行并返回列表print(txt)f.close()
输出:
>>>['hello 智数分析1!\n', 'hello 智数分析2!\n', 'hello 智数分析3!\n', 'hello 智数分析4!']
3.5 写文件
内容先写入内存缓冲区,然后再由内存缓冲区写入到文件。
path = rd:\code\test.txtf = open(path, a)f.write(hello python) #将信息写入内存缓冲区f.flush() #刷新内存缓冲区f.close()
4、文件读写异常
前面已经介绍过了python异常处理,我们在处理文件时也经常会遇到一些异常,会导致f.close()无法执行。
如果也用try......except......finally方式去处理,程序代码会比较复杂。
try:f = openr(rd:\code\test.txt, 'r') print(f.read())finally: if f: f.close()
python提供了with语句来帮我们自动调用close()方法,以后我们要处理文件时,都可以用以下这种写法。
path = rd:\code\test.txtwith open(path, r) as f:print(f.read())