文件操作
从文件中读取
text.txt
1 2 3 4 5 hello world python java c c++ for f serj eoifjwefj;asf aefdeoifjeoifzsfkskfdjasofwqkqjz;ovjzpjvnnbaeawkoijq
read
不加限制就是全部读取文件
1 2 f = open ("text.txt" , "r" ) print (f)
输出
1 2 3 4 5 hello world python java c c++ for f serj eoifjwefj;asf aefdeoifjeoifzsfkskfdjasofwqkqjz;ovjzpjvnnbaeawkoijq
读取指定长度
输出
注:read移动的是文件指针,一开始写成这样结果发现后面什么都没有读到,因为文件指针已经读到末尾了
1 2 3 4 5 6 7 f = open ("text.txt" , "r" ) print (f"全部读取\n{f.read()} " )print (f"读取前两个字符\n{f.read(2 )} " )print (f"读取前10个字符\n{f.read(10 )} " )f.close()
输出
1 2 3 4 5 6 7 8 9 10 全部读取 hello world python java c c++ for f serj eoifjwefj;asf aefdeoifjeoifzsfkskfdjasofwqkqjz;ovjzpjvnnbaeawkoijq 读取前两个字符 读取前10个字符
要将文件指针复位
1 2 3 4 5 6 7 f = open("text.txt", "r") print(f"全部读取\n{f.read()}") f.seek(0) print(f"读取前两个字符\n{f.read(2)}") f.seek(0) print(f"读取前10个字符\n{f.read(10)}") f.close()
1 2 3 4 5 6 7 8 9 10 全部读取 hello world python java c c++ for f serj eoifjwefj;asf aefdeoifjeoifzsfkskfdjasofwqkqjz;ovjzpjvnnbaeawkoijq 读取前两个字符 he 读取前10个字符 hello worl
用for循环就会一行一行读
输出
1 2 3 4 5 6 7 8 9 for循环 hello world python java c c++ for f serj eoifjwefj;asf aefdeoifjeoifzsfkskfdjasofwqkqjz;ovjzpjvnnbaeawkoijq
总结:如果读取多次,下次读取是从上次读取结束的位置开始读取
readline
一行一行读
1 2 f = open ("text.txt" , "r" ) content = f.readline()
输出
如果限制字符数就读取一行中限制字符数
1 2 3 f = open ("text.txt" , "r" ) content = f.readline(3 ) print (content)
输出
for循环逐个打印文件中一行中字符
1 2 3 f = open ("text.txt" , "r" ) for content in f.readline(): print (content)
输出
readlines()
不加限制就是读取文件中全部行,将每一行作为列表中一个元素,最终保存到一个列表里
1 2 3 f = open ("text.txt" , "r" ) content = f.readlines() print (content)
输出
1 ['hello world\n', 'python java c c++\n', 'for f serj eoifjwefj;asf\n', 'aefdeoifjeoifzsfkskfdjasofwqkqjz;ovjzpjvnnbaeawkoijq\n']
读取xlsx文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 import openpyxldef readExcel (file_path ): wb = openpyxl.load_workbook(file_path) sheet = wb.active for row in sheet.iter_rows(): for cell in row: print (cell.value, end=" " ) print () print (readExcel(r"D:\HuaweiMoveData\Users\piolet\Desktop\寒假每天任务记录.xlsx" ))
输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 日期 正式工作时间 蓝桥杯(5:30-11:30)目标4) 科研(13:00-18:00, 19:00-20:00,目标6h) 数模(21:00-23:00,目标2) 开小差次数 手机使用时间 总工作时间 None 1.13 05:28:00 4 None None 1 2h28min None None 1.14 05:30:00 4,明天从 https://blog.csdn.net/weixin_43914593/article/details/133969568开始做 3,明天继续看https://zh.d2l.ai/chapter_linear-networks/softmax-regression.html#equation-eq-softmax-y-and-o留下来的一点小尾巴,然后要从https://zh.d2l.ai/chapter_linear-networks/softmax-regression-concise.html#sec-softmax-concise和https://zh.d2l.ai/chapter_multilayer-perceptrons/mlp-concise.html开始看,争取一天看完动手深度学习 None 1 2h23min 7 None 1.15 05:36:00 3 4 2 1 2h41min 9 None 1.16 05:35:00 5 3 1 2 2和4min 9 None 1.17 05:45:00 0 8 0 0 2h40min 8 None 1.18 05:32:00 5 4.5 1.5 1 1h55min 11 None 1.19 05:25:00 1 5 0 6 5h 6 None 1.2 06:40:00 维护博客3h 0 3 0 5h 6 None 1.21 05:39:00 6 0 0 5 6h8min 6 None 1.22 05:22:00 5 4 2 4 2h30min 11 None 日期 正式工作时间 科研(5:30-11:30,目标4) 蓝桥杯(13:30-6:30,目标4) 数模(19:00-20:00,21:00-23:00,目标3) 开小差次数 手机使用时间 总工作时间 运动次数 1.23 05:30:00 4 4 2 5 None None 2 None
写入xlsx文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 import openpyxldef writeExcel (path, data ): """ :param path: 写入数据的文件路径 :param data: 要写入到文件里数据 :return: """ wb = openpyxl.Workbook() sheet = wb.active for row in data: sheet.append(row) wb.save(path) path = 'D:\\yaoming.xlsx' writeExcel(path, [['1' , '2' , '3' ], ['4' , '5' , '6' ], ['7' , '8' , '9' ]])
应用---制作文件的备份
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 任务描述: 输入文件名字,然后程序自动完成对该文件的备份操作: """ 分析: input--->string 打开需要备份的文件 存在 读取打开需要备份文件数据 关闭需要备份文件 不存在 实现备份 1.定义备份文件的规则 2.将备份文件数据写入到新文件里面 3.关闭新文件 """ import os.pathdef copy (path ): oldFileName = input ('请输入你要备份文件的名称:' ) fileName = open (oldFileName,'r' ) if fileName: copyFile = oldFileName.rfind('.' ) name = oldFileName[0 :copyFile] fileFlag = os.path.splitext(path)[1 ] newFileName = name+'-副本' +fileFlag newFile = open (newFileName,'w' ) for line in fileName.readlines(): newFile.write(line) fileName.close() newFile.close() else : print ('没有文件打开' ) copy('text.txt' )
文件的定位读写
获取当前读写文件的位置
1 2 3 4 5 f = open ('text.txt' ,'rb' ) str = f.read(3 )print ('读取的数据是:' ,str )position = f.tell() print ('读取的位置是:' ,position)
输出
1 2 3 读取的数据是: b'hel' 读取的位置是: 3
定位到某一个位置
定位到某一个位置
文件的重命名
1 2 import osos.rename("test.txt" ,"毕业论文.txt" )
文件的删除
1 2 import os os.remove("待删除文件夹名" )
文件夹操作
创建
1 2 import osos.mkdir("新文件夹名" )
获取当前的目录
1 2 import osprint (os.listdir("./" ))
删除文件夹
1 2 import osos.rmdir("待删除文件夹名" )
应用----批量修改文件名(重命名)
StringIO和BytesIO
StringIO
BytesIO