python中对文件操作有哪些?怎样实现?

Admin 2021-08-21 群英技术资讯 397 次浏览

    这篇文章主要给大家分享python中对文件的操作,包括文件的打开和关系,读写文件和文件备案,对新手学习Python有一定的借鉴价值,感兴趣的朋友可以参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。

        一.文件基本操作

        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+读写模式

        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文件然后写入

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

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

        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的文件,内容和备份文件一样
    

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

    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文件操作的内容,大家可以关注其他相关文章。

    文本转载自脚本之家

    群英智防CDN,智能加速解决方案
    标签: python文件操作

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

    猜你喜欢

    成为群英会员,开启智能安全云计算之旅

    立即注册
    专业资深工程师驻守
    7X24小时快速响应
    一站式无忧技术支持
    免费备案服务
    免费拨打  400-678-4567
    免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
    在线客服
    微信公众号
    返回顶部
    返回顶部 返回顶部
    在线客服
    在线客服