python必学知识之文件操作(建议收藏)


Posted in Python onMay 30, 2021

一.文件基本操作

1.1 文件打开和关闭

  1. open(‘文件名称','打开模式')
  2. 模式:r(只读,指针再头) w(只写,存在覆盖,不存创新) a(追加) b(二进制格式)
  3. close() 方法关闭文件
f=open('text.txt','w')#创建text.txt文件,用f来指代
f.close()#关闭文件

注意: 打开一个文件之后,一定要关闭,否则后面无法继续操作这个文件

with 上下文管理,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭打开的文件句柄。

def main():
    with open('text.txt','w+') as f:
        content=f.read()#读取文件写入内容
        print(content)#输出
main()#输出完成后会自动关闭文件

错误:如果报错io.UnsupportedOperation: not readable

因为你是用open打开一个文件,此时调用的是w写入模式,下面使用read是没有权限的,你得使用w+读写模式

python必学知识之文件操作(建议收藏)

1.2 读/写文件

1.2.1 写文件

写文件 write默认的编码是gbk 这个是中文编码,最好的习惯呢就是我们再打开一个文件的时候给它指定一个编码类型encoding,要不然会出现乱码

f=open('text.txt','w',encoding='utf-8')#w为写入模式
f.write('人生苦短,我用python')#写入文件text.txt
f.close()

#writelines()可传一个可迭代对象
f=open('text.txt','a',encoding='utf-8')#a为追加模式

他会自动生成text文件然后写入

python必学知识之文件操作(建议收藏)

writelines 方法将可迭代对象,迭代写入文件

f.write('\r\n')
f.writelines(['人生','就是','不断的学习'])
print('\n')
f.close()

python必学知识之文件操作(建议收藏)

1.2.2 读文件

 read(num):传入一个数字做参数,表示读取指定字符个数。列:read(1)
readlines() :按行读取,一次性读取所有内容,返回一个列表,每一行内容作为一个元素。
readline() :按行读取,但是一次只读取一行。

#读取文件
f=open('text.txt','r',encoding='utf-8')#只读模式
print(f.read())#全部读取输出
f.close()

注意:出现UnicodeDecodeError: ‘gbk' codec can't decode byte 0xad in position 52: illegal multibyte sequence错误

解决:open中加入encoding=‘utf-8'就行

二. 文件备份脚本

利用脚本完成自动备份,要求用户输入文件名称,完成自动备份

def copyfile():
    #接收输入的文件
    old_file=input('请输入要备份的文件:')
    file_list=old_file.split(".")#split()函数通过指定分隔符对字符串进行切片,假设要备份text.txt文件,输出是['text', 'txt']
    new_file=file_list[0]+'_备份.'+file_list[1]#构造新的文件名,加上备份后缀
    old_f=open(old_file,'r')#只读模式打开备份的文件
    new_f=open(new_file,'w')#只写模式打开新文件,不存在则创建
    new_f.write(old_f.read())#将备份文件内容读取出来写入新文件
    #关闭所有打开文件
    old_f.close()
    new_f.close()
copyfile()#到时候文件夹里面会出现一个text_备份.txt的文件,内容和备份文件一样

python必学知识之文件操作(建议收藏)

如果处理超大文件,一次将全部内容读取出来显然是不合适的,在上面代码的基础上改进下代码,让它备份大文件也不会导致内存被占满

def copyfile2():
    #接收输入的文件
    old_file=input('输入要备份的文件')
    #如果没有输入或者输入错误就提示
    if not old_file:
        print('输入错误')
        old_file = input('输入要备份的文件:')
    else:
         file_list=old_file.split(".")
         print(file_list)
    #创造新的文件名,加上备份后缀
    if len(file_list)<2:#如果列表长度小于2,就不用加.
        new_file=file_list[0]+'_备份2'
        pass
    else:#文件有后缀的情况
        new_file=file_list[0]+'_备份2.'+file_list[1]
    #用异常处理判断内存是否被占满
    try:
        #同时打开需要备份的文件,新文件
        with open(old_file,'r') as old_f, open(new_file,'a')  as  new_f:
            while True:
                content=old_f.read(2048)#一次读取2048个字符
                new_f.write(content)#写入
                #当读取的内容字符长度小于2048是说明读取完毕
                if len(content)<2048:
                    break#跳出循环
    except Exception as e:
        print(e)#如果内存满无法读取了,就抛出异常
copyfile2()#到时候文件夹里面会出现一个text_备份2.txt的文件,内容和备份文件一样

备份了text.txt

python必学知识之文件操作(建议收藏)

总结

到此这篇关于python必学知识之文件操作的文章就介绍到这了,更多相关python文件操作内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python格式化css文件的方法
Mar 10 Python
举例讲解Python中字典的合并值相加与异或对比
Jun 04 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
Numpy数组的保存与读取方法
Apr 04 Python
APIStar:一个专为Python3设计的API框架
Sep 26 Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
学Python 3的理由和必要性
Nov 19 Python
解决keras模型保存h5文件提示无此目录问题
Jul 01 Python
python调用摄像头的示例代码
Sep 28 Python
python读取excel数据绘制简单曲线图的完整步骤记录
Oct 30 Python
python人工智能human learn绘图可创建机器学习模型
Nov 23 Python
Python使用Kubernetes API访问集群
如何利用pygame实现打飞机小游戏
Python中requests做接口测试的方法
python关于集合的知识案例详解
May 30 #Python
教你漂亮打印Pandas DataFrames和Series
pytorch 实现多个Dataloader同时训练
python 如何做一个识别率百分百的OCR
You might like
php发送与接收流文件的方法
2015/02/11 PHP
一波PHP中cURL库的常见用法代码示例
2016/05/06 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
PHP字符串和十六进制如何实现互相转换
2020/07/16 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
如何使用jquery动态加载js,css文件实现代码
2013/04/03 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
2016/06/30 Javascript
AngularJS 验证码60秒倒计时功能的实现
2017/06/05 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
layui 点击重置按钮, select 并没有被重置的解决方法
2019/09/03 Javascript
Vue 自定义标签的src属性不能使用相对路径的解决
2019/09/17 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
使用Python生成url短链接的方法
2015/05/04 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
python遍历序列enumerate函数浅析
2017/10/17 Python
详解python数据结构和算法
2019/04/18 Python
简单了解python中的与或非运算
2019/09/18 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
Lookfantastic意大利官网:英国知名美妆购物网站
2019/05/31 全球购物
金讯Java笔试题目
2013/06/18 面试题
广州品高软件.net笔面试题目
2012/04/18 面试题
毕业研究生的自我鉴定
2013/11/30 职场文书
企业内部培训方案
2014/02/04 职场文书
中班幼儿评语大全
2014/04/30 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
教师节联欢会主持词
2015/07/04 职场文书
优化Mysql查询的示例
2022/04/26 MySQL