Python: 使用open函数报错:‘gbk‘ codec can‘t decode byte 0x80 in position 8: illegal multibyte sequence

Python: 使用open函数报错:'gbk' codec can't decode byte 0x80 in position 8: illegal multibyte sequence

问题描述:

想写一个脚本用来将指定目录下的文件内容拷贝到txt文档内,源码如下:

import os
 
f = open("./test_name.txt",'w') #先创建一个空的文本 
path ="D:/Users/Documents/Pratices"    #指定需要读取文件的目录 
files =os.listdir(path) #采用listdir来读取所有文件 
files.sort() #排序 
s= []                   #创建一个空列表 
for file_ in files:     #循环读取每个文件名
    print(path+" "+file_) 
    if not  os.path.isdir(path +file_):  #判断该文件是否是一个文件夹 
        f_name = str(file_)
        print(f_name)
        with open(('D:/Users/Documents/Pratices/%s'%f_name), "r",encoding = 'utf-8') as ff:
            lines = ff.readlines()
            for line in lines:
                line = line.strip()
                print(line)
                ''' a  打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容
                将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入'''
                with open(('D:/Users/Documents/Pratices/%s'%f_name+'.txt'), "a",encoding = 'utf-8') as ww:
                    ww.write(line+'\n')
        s.append(f_name)  # 把当前文件名返加到列表里 
        f.write(f_name + '\n') # 写入之前的文本中
print(s) #看一下列表里的内容

当执行到此处的时候报错

with open(('D:/Users/Documents/Pratices/%s'%f_name), "r") as ff:

在这里插入图片描述
搜索了全网,大都归咎于:变量重复定义,但是我找了好久也没发现重定义的地方。

解决方法:

再open函数中补充参数encoding,修改后的代码如下:

with open(('D:/Users/Documents/Pratices/%s'%f_name), "r",encoding = 'utf-8') as ff:

解决思路:

全网搜索使用open函数的用例,照猫画虎一步一步修改

引用

https://blog.csdn.net/cqylqq/article/details/51331966?biz_id=102&utm_term=python%E5%A4%8D%E5%88%B6text%E5%86%85%E5%AE%B9&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-51331966&spm=1018.2118.3001.4449
https://blog.csdn.net/haohaomua/article/details/107113919

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值