获取当前目录下所有txt文件及其编码
时间: 2024-05-13 19:13:33 浏览: 40
您可以使用以下Python代码获取当前目录下所有txt文件及其编码:
```python
import os
import chardet
txt_files = []
for file_name in os.listdir():
if file_name.endswith('.txt'):
with open(file_name, 'rb') as f:
encoding = chardet.detect(f.read())['encoding']
txt_files.append((file_name, encoding))
print(txt_files)
```
此代码将返回一个列表,其中包含每个txt文件的文件名和编码。
相关问题
爲什麽報錯import os # 文件名 filename = "當天log抓取.txt" # 获取当前工作目录 current_dir = r"D:\Python文檔" # 遍历当前工作目录及其子目录,查找文件 for root, dirs, files in os.walk(current_dir): if filename in files: # 如果找到了文件,打开它 with open(os.path.join(root, filename), 'r') as file: content = file.read() print(content) break else: # 如果没有找到文件,输出错误信息 print(f"Error: File '{filename}' not found.")
你的代码中报错可能是因为文件名包含中文字符,而在 Windows 操作系统中,文件名中的中文字符会被编码成 GBK 码,而不是 Unicode 码。因此,你需要在代码中指定文件名的编码格式为 GBK,例如:
```python
import os
# 文件名
filename = "當天log抓取.txt"
# 获取当前工作目录
current_dir = r"D:\Python文檔"
# 遍历当前工作目录及其子目录,查找文件
for root, dirs, files in os.walk(current_dir):
if filename.encode('gbk') in files:
# 如果找到了文件,打开它
with open(os.path.join(root, filename), 'r', encoding='gbk') as file:
content = file.read()
print(content)
break
else:
# 如果没有找到文件,输出错误信息
print(f"Error: File '{filename}' not found.")
```
在代码中,我们使用 `filename.encode('gbk')` 将文件名编码成 GBK 码,然后在查找文件时使用 GBK 码进行匹配。在打开文件时,我们也需要指定文件的编码格式为 GBK。这样,就可以避免因文件名中包含中文字符而导致的编码错误。
阅读全文