博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件处理高级
阅读量:5015 次
发布时间:2019-06-12

本文共 2929 字,大约阅读时间需要 9 分钟。

复制文件:从源文件读取 写入到新文件中 #打开源文件 source_f=open('作业.py','rb') #打开目标文件 dst_f=open('作业副本.py','wb') #从原文件读取数据写入到目标文件 data=source_f.read() dst_f.write(data) source_f.close() dst_f.close() #并列打开多个文件 可以用逗号分开 with open ('作业.py','rb') as source_f,open("作业副本.py","wb") as dst_f: data=source_f.read() dst_f.write(data) #with的嵌套语法  with open("作业基础版.py","rb") as source_f:     with open("作业副本.py","wb") as dst_f:         data = source_f.read()         dst_f.write(data) #with的嵌套时  注意:不要对同一个文件进行操作 with open ('log.txt','rb') as source_f:     with open('log.txt','wb') as source_f:      data=source_f.read()      dst_f.write(data) 让用户指定要复制的文件 source_path = input("请输入源文件路径:").strip() dst_path = input("请输入目标文件路径:").strip() with open(source_path,"rb") as source_f:     with open(dst_path,"wb") as dst_f:         data = source_f.read()         dst_f.write(data)     基于CMD的复制工具 要达到的效果是在CMD中直接输入复制的文件路径 一回车就完成效果 1.需要获取CMD输入的参数 import sys#有一个文件叫sys import是导入这个文件 sys文件里有一个变量名称叫argv print(sys.argv)#得到的就是执行解释器时传入的参数,第一个参数默认就是当前执行文件 #源文件路径 source_path=sys.argv[1] #目标文件路径 dst_path=sys.argv[2] with open (source_path,'rb') as source_f:     with open(dst_path,'wb') as dst_f:      data=source_f.read()      dst_f.write(data) 文件对象其他操作 f.name  #获取文件的路径 f.flush #刷出 开机将数据写入硬盘 可以保证数据不丢失 但效率会降低 操作系统会在文件关闭时一次性写入 当操作系统的缓存满了也会写入 是为了减少I/O操作 提高效率 f = open("userdb.txt","at",encoding="utf-8") for i in range(10):     data = input(">>:").strip()     f.write(data)     print("写了一次")     f.flush() # 立即将数据写入硬盘,可以保证数据不丢失,但是效率会降低 f.close() print(f.closed)#文件是否已经关闭 print(f.encoding)#获取文件的编码方式 print(b.buffer)#获取缓冲区 忘记它吧 文件的修改: 1.读取文件数据到内存 2.进行修改 3.将修改后的数据写会文件中 new_data = "" with open("userdb.txt",encoding="utf-8") as f:     data = f.read()     datas = data.split("\n")     for line in datas:         print(line.split("|")[0])         name = line.split("|")[0]         if name == "admin": # 取出名字判断是否等于admin             name = name+"[is good man]" # 如果是则添加 is good man             # 取出密码 和手机号 再次拼接为原来的样式             pwd = line.split("|")[1]             phone = line.split("|")[2]             new_line = "|".join([name,pwd,phone])             new_line += "\n"             # 拼接修改过的数据             new_data += new_line         else:             # 拼接未被修改的数据             line += "\n"             new_data += line print(new_data) with open("userdb.txt",mode="wt",encoding="utf-8") as f:     f.write(new_data)  以上代码存在什么问题相当于把整个文件数据都存到内存中 会造成内存溢出 文件修改的第二种方法:   读一行 修改一行 修改完立马写入硬盘,避免内存溢出问题  具体使用哪种方式 得看文件大小  较小的文件 推荐一次性读到内存进行修改 减少io操作  较大的文件 则必须采用第二种  with open("userdb.txt",mode="rt",encoding="utf-8") as source_f,open("temp.swap",mode="wt",encoding="utf-8") as dst_f:     for line in source_f:         new_line = line.replace("admin","ADMIN")         dst_f.write(new_line) import os os.remove("userdb.txt")  # 删除源文件 os.rename("temp.swap","userdb.txt") # 将交换文件重命名为源文件名 import os os.remove('')#删除文件 os.rename(' , ')#将交换文件重命名为原文件名

转载于:https://www.cnblogs.com/gengbinjia/p/10239172.html

你可能感兴趣的文章
如何获取免版权图片资源
查看>>
MySql避免全表扫描【转】
查看>>
Storm学习笔记二
查看>>
windows 中的类似于sudo的命令(在cmd中以另一个用户的身份运行命令)
查看>>
java===单类设计模式之饿汉式与懒汉式
查看>>
BZOJ 1083: [SCOI2005]繁忙的都市
查看>>
Maven 编译
查看>>
《学习之道》第十章学习方法29还记得散步的好处嘛
查看>>
Git常用命令总结
查看>>
iOS获取设备IP地址
查看>>
JavaSE| String常用方法
查看>>
NRF51822配对绑定要点
查看>>
C语言博客作业—数据类型
查看>>
语言基础:C#输入输出与数据类型及其转换
查看>>
特征根求解
查看>>
JBPM使用方法、过程记录
查看>>
【BZOJ1355】【Baltic2009】Radio Transmission 详细证明【KMP】
查看>>
03-06考试总结
查看>>
Photoshop制作的海报修改~
查看>>
SQL Server 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过...
查看>>