文件操作
文件操作:
打开文件,读写文件,操作文件内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| open() 打开或者建立文件 格式:open('文件路径','打开方式',encoding = '设置字符集')
打开方式: 基础模式: w w模式 write 写入模式 1.文件不存在则新建文件,文件存在则打开并且清空文件 2.文件的指针指向文件的开头 r r模式 read 读取模式 1.文件不存在则报错,文件已存在则打开文件 2.文件的指针指向文件的开头 x x模式 xor 异或模式 1.文件不存在则新建文件,文件已存在则报错 2.文件的指针指向文件的开头 a a模式 append 追加模式 1.文件不存在则新建文件,文件已存在则打开文件 2.文件指针指向文件的末尾 扩展模式: b b模式 bytes bytes模式 + plus模式 增强模式
文件操作模式: w,r,a,x wb,rb,ab,xb w+,r+,a+,x+ wb+,rb+,ab+,xb+
文件指针:程序操作文件的光标(我们看不见 不是我们使用的光标)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| fp = open('test1.txt','w',encoding='utf-8') fp.write('人生苦短,我用python')
fp = open('test2.txt','r',encoding='utf-8') data = fp.read() print(data)
fp = open('test3.txt','x',encoding='utf-8')
fp = open('test4.txt','a',encoding='utf-8') fp.write('人生苦短,我用python')
fp = open('test5.txt','wb',encoding='utf-8') fp.write('一二三四五,上山打老虎'.encode())
fp = open('test6.txt','w+',encoding='utf-8') fp.write('兄弟连激情四射!')
fp.seek(0)
data = fp.read() print(data)
fp.close()
|
文件的读取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| close():关闭文件对象,方便回收资源 文件打开就要关闭!
read() 读取文件内容 格式:文件io对象.read() 读取所有内容 格式:文件io对象.read(读取的字符个数) 读取指定长度的字符
fp = open('read.txt','r',encoding= 'utf-8')
data = fp.read() print(data)
data = fp.read(5) print(data)
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| readline() 一次读取一行的内容 格式:文件io对象.readline() 读取一行内容 格式:文件io对象.readline(读取的字符个数) 读取内容:如果个数>当前行的字符数,只读取当前行,如果读取的字符个数<=当前行字符串,按照指定的长度读取
fp = open('readline.txt','r',encoding='utf-8')
data = fp.readline() print(data)
data = fp.readline(30) print(data)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| readlines() 一次读去多行内容 格式:文件io对象.readlines() 将所有数据按行读取到列表当中去 格式:文件io对象.readlines(字符个数) 将所有数据按行读取到列表当中去
fp = open('readlines.txt','r',encoding='utf-8')
data = fp.readlines() print(data)
data = fp.readlines(11) print(data)
注意:如果字符个数不满1行按照一行计算
|
1 2 3 4 5 6 7 8 9 10 11
| write() 向文件中写入内容 格式:文件io对象.write(内容) writelines() 将容器数据写入到文件当中 格式:文件io对象.writelines(容器类数据)
shi = ['鹅鹅鹅\n','曲项向天歌\n','白毛浮绿水\n','红掌拨清波'] fp = open('writelines.txt','w',encoding='utf-8')
fp.write('唧唧复唧唧,木兰当户织')
fp.writelines(shi)
|
1 2 3 4 5 6
| truncate()截取文件内容 格式:文件io对象.truncate(字节个数)
fp = open('truncate.txt','r+')
fp.truncate(10)
|
与文件指针相关的函数
获取当前文件指针的位置,文件指针按照字节计算而不是字符!
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 格式:文件io对象.tell() 返回值:文件指针位置的整数
fp = open('tell.txt','r',encoding='utf-8')
position = fp.tell() print(position)
data = fp.read(3) print(data)
position = fp.tell() print(position)
|
设置指针的位置
1 2 3 4 5 6
| 格式:文件io对象.seek(指针长度,参考位置) #这是官方定义的功能 指针长度: 只是一个整数 参考位置: 0 表示从头开始计算长度 【只有这个可以使用,可以直接省略】 1 表示从当前指针的位置开始计算长度 2 表示从末尾向前计算长度
|
1 2 3 4 5 6 7 8 9 10 11
| fp = open('seek.txt','r',encoding='utf-8')
print(fp.tell())
fp.seek(12,0)
print(fp.tell())
print(fp.read(3))
print(fp.tell())
|
OS模块的应用
使用os模块必须加载os模块才可以使用。
获取当前的工作目录(get current work directory)
1 2 3 4 5 6 7
| 格式:os.getcwd(),返回值:当前工作目录的地址字符串
result = os.getcwd() print(result)
注意:当前工作目录:操作文件或者文件夹等信息的默认查找使用的文件夹
|
修改当前的工作目录
1 2 3 4 5
| 格式:os.chdir(要设置的工作目录),返回值:无
os.chdir('D:/') open('test1.txt','w')
|
获取指定文件夹中的所有内容的信息组成的列表
1 2 3 4
| 格式:os.listdir(路径),返回值:存放所有内容名称的列表
result = os.listdir('C:/Users/xdl/PycharmProjects/python_03') print(result)
|
创建文件夹
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 格式:os.mkdir(文件夹路径,权限设置),返回值:无
os.mkdir('D:/father',0o777)
以下内容对linux有效,window无所谓 0o 7 7 7 八进制 所有者 所属组 其他人
所有者:文件夹或者文件归谁所有 admin 用户 所属组:所有者所在的组别 group用户 其他人: 不是所有者或者所属组的其他用户 other用户
权限划分: 可读,可写,可执行 4 2 1
|
递归创建文件夹
1 2 3 4 5
| 格式:os.makedirs(路径,权限),返回值:无
os.makedirs('D:/a/b/c')
|
删除空文件夹
1 2 3 4
| 格式:os.rmdir(路径),返回值:无
os.rmdir('D:/father')
|
递归删除空文件夹
1 2 3 4 5
| 格式:os.removedirs(路径),返回值:无
os.removedirs('D:/a/b/c')
|