文件基本操作
- 文件打开的格式:
- file1 = open(文件路径,读写模式),使用open函数。会返回一个文件对象。
- 文件路径:可以写相对路径,也可以写绝对路径。路径需要以字符串形式传入。
- 读写模式:r(读取) w(写入) a(追加)
- open默认打开模式是r 模式,多用于打开文本类型的文件
- 文件打开后,必须关闭,否则持续消耗服务器性能。
| |
| file1 = open('python.txt', 'r', encoding='utf-8') |
| print(file1) |
| print(type(file1)) |
| print(file1.read()) |
| |
| file1.close() |
| print(file1) |
| print(file1.read()) |
文件的读取
- read()格式:文件对象.read(num)
- num表示要从文件中读取的数据长度(单位:字符),若没有传入num,就表示读取文件中所有数据。
- 最大读取字符一般限定为1024*1024(约1兆,若utf-8读取汉字就是约3兆)
- 如果读取的文件不存在则直接报错
| file1 = open('python.txt', 'r', encoding='utf-8') |
| |
| |
| |
| while True: |
| content = file1.read(4) |
| if content == '': |
| break |
| print(content) |
| file1.close() |
| ''' |
| 我会长成 |
| 一棵大树 |
| |
| 等你赞 |
| 一声良木 |
| ''' |
- readline: 每次读取一行,以\n为分隔符,在一个文件开启后,多次执行读取操作会持续向后读取,如果字符全部被读取完成,则返回空字符串。
- readlines:一次性将文件全部读取,读取后,将文字以一行为一个元素保存到列表当中进行返回。
| file1 = open('python.txt', 'r', encoding='utf-8') |
| while True: |
| content = file1.readline() |
| if content == '': |
| break |
| print(content, end='') |
| file1.close() |
| ''' |
| 我会长成一棵大树 |
| 等你赞一声良木 |
| 风轻云淡 |
| 坐看云卷云舒 |
| ''' |
| file1 = open('python.txt', 'r', encoding='utf-8') |
| content = file1.readlines() |
| print(content) |
| |
| file1.close() |
文件的写入
- 使用写入模式‘w’打开文件
- 如果文件存在,则清空源数据
- 如果文件不存在,则新建文件,不会报错
- 使用write可以写入字符
- 在windows电脑中书写文件读写时,需要使用encoding进行编码格式指定
- 格式:open(文件路径, 读写模式, encoding = 编码格式)
| file1 = open('test.txt', 'w') |
| file1.close() |
| |
| |
| |
| |
| file2 = open('python.txt', 'w', encoding='utf-8') |
| |
| |
| file2.write(''' |
| 我爱北京天安门, |
| 天安门上太阳升。''') |
| file2.close() |
| |
| |
| file3 = open('test.txt', 'w', encoding='utf-8') |
| lines = ['吴丝蜀桐张高秋\n', '空山凝云颓不流\n', '举头望明月\n', '低头思故乡\n'] |
| file3.writelines(lines) |
| file3.close() |
| |
| |
| f = open("1.txt",'w+') |
| f.write("hello ") |
| f.write("China!") |
| d = f.read() |
| print(d) |
| f.close() |
文件的追加
- ‘a’:模式下进行文件打开
- 如果文件不存在,则创建新文件
- 如果文件存在,则在原有文件内进行字符串追加,不会清空源文件
- 在追加模式下,也使用write进行文件写入,没有单独追加方法,写入方式和‘w’模式一致
| file = open('bigdata.txt', 'a', encoding='utf-8') |
| |
| file.write('乱我心者今日之日多烦忧') |
| |
| file.close() |
文件读写模式拓展(能明白意思即可)
-
a: a a+ ab ab+
- a:字符追加模式
- a+ :字符追加模式下可以进行字符读取
- ab:字节追加
- ab+:字节追加模式下,可以进行字节读取
-
w: w w+ wb wb+
- w:字符写入模式
- w+:字符写入模式下可以进行字符读取
- wb:字节写入模式
- wb+:字节写入模式下,可以进行字节读取
-
r: r r+ rb rb+
- r:字符读取模式,文件的指针将会放在文件的开头。这是默认模式。
- r+:字符读取模式下可以进行字符写入
- rb:字节读取模式,比如读取图片
- rb+:字节读取模式下,可以进行字节写入
文件备份案例
| |
| file_name = input('请输入您要备份的文件名称:') |
| old_file = open(file_name, 'r', encoding='utf-8') |
| |
| |
| |
| copy_file_name = file_name.replace('.', '[备份].') |
| |
| |
| copy_file = open(copy_file_name, 'a', encoding='utf-8') |
| |
| |
| while True: |
| content = old_file.read(3) |
| if content == '': |
| break |
| copy_file.write(content) |
| |
| |
| old_file.close() |
| copy_file.close() |
文件和文件夹的操作
文件的重命名和删除
- rename可以进行文件的重命名或文件移动
- remove 可以进行文件删除
| import os |
| |
| |
| |
| |
| |
| |
| os.remove('D_test1/acn') |
文件夹的操作
- mkdir:创建一个空文件夹,不能创建多级文件夹
- os.makedirs('aaa/bbb/ccc')创建多级目录
- rmdir:删除空文件夹,不能删除有文件的文件夹,removedirs删除多级空目录
- getcwd:获取当前使用的工作目录的路径
- chdir:切换当前的工作目录
- listdir:查询指定的目录结构,将该目录下所有文件名以字符串形式保存在列表中返回
- 括号内不填写任何内容则为查询工作目录的目录结构
- 如果填写路径,则是对指定目录的查询
| import os |
| |
| |
| |
| |
| os.makedirs('aaa/bbb/ccc') |
| |
| |
| |
| |
| os.removedirs('aaa/bbb/ccc') |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| print(os.listdir('D_test1')) |
批量修改文件名案例
| |
| ''' |
| 1.修改时可以通过参数控制是增加,还是删除字符 |
| 2.传入指定字符用于增加或者删除 |
| 3.使用rename进行重命名 |
| ''' |
| |
| |
| import os |
| |
| |
| flag = False |
| |
| str1 = '[黑马出品]' |
| |
| |
| |
| |
| |
| |
| |
| def modify_files_name(flag, str1, path): |
| os.chdir(path) |
| for file_name in os.listdir(): |
| if flag: |
| |
| os.rename(file_name, str1 + file_name) |
| else: |
| |
| os.rename(file_name, file_name.replace(str1, '')) |
| |
| |
| |
| |
| modify_files_name(flag, str1, 'student') |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!