file_path = "xxx"
files = os.listdir(file_path)
contents = []
for file in files:
file_p = os.path.join(file_path, file)
with open(file_p, 'r', encoding='utf-8') as f:
a = f.read()[:200]
contents.append(a)
在读取txt文件时发现总是报错
但是我的文件确定是使用utf-8编码的文件,查了一下原来是mac系统的系统文件ds_store搞怪
参考了这位博主提出的方法:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 3131: invalid start byte解决办法_dadan9的博客-CSDN博客
解决办法是:使用命令行进入当读取文件所在文件夹,删除.DS_Store文件。
1. 使用命令ls -a可以查看到.DS_Store文件
2. rm .DS_Store。
但我在删除后,通过ls -a发现也没有ds文件了,但发现还是不行,照样报错
后直接在代码加了一步:
print(files)
发现在代码运行时ds文件又自动产生了。
['.DS_Store', '1 2.txt', '1.txt']
于是提出解决方法:通过文件判断跳过ds文件。
for file in files:
# 检查文件是否为txt文件
if os.path.splitext(file)[-1] == '.txt':
file_p = os.path.join(file_path, file)
with open(file_p, 'r', encoding='utf-8') as f:
a = f.read()[:200]
contents.append(a)