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