python - 解析子文件夹中的文件
问题描述
我必须解析位于不同子文件夹中的所有文本文件。主文件夹是“数据”。在这里面,有很多子文件夹。我必须解析这些子文件夹中的所有文件并执行一些操作。我遇到了一个代码,但它并没有真正起作用。
import glob
import os
dir="D:\\College\\Data"
file_write_in_results = open("D:\\result\\test_all_files.txt","w", encoding="utf8") # file in which we will write the desired results
subdirs = [x[0] for x in os.walk(dir)]
for subdir in subdirs:
files = next(os.walk(subdir))[2]
if (len(files) > 0):
for filename in files:
#for filename in glob.glob('*.txt'):
with open(filename, encoding="utf8") as f:
for line in f:
if "signed by" in line:
file_write_in_results.write(filename)
file_write_in_results.write('\n')
file_write_in_results.close()
解决方案
您不需要遍历 dirs,因为它们也将在root
变量中提供,仅files
需要在内部循环中循环,如下所示:
import os
dir="D:\\College\\Data"
for root, dirs, files in os.walk(dir):
for file in files:
with open(os.path.join(root, file), encoding="utf8",mode="r") as f:
pass
#your file parsing logic goes here
请务必使用正确的encoding
和mode
。mode='rb'
会更安全,您也可以将其全部包装在 atry except
中以处理有问题的文件,以便在遇到此类文件时解析过程不会停止。
推荐阅读
- java - Java 8 流分组依据。如果只有一个分组值对象,如何设置字段?
- java - Jpa Repository save() 不更新现有数据
- php - Laravel 文件上传到 GCP 存储 - .json 文件另存为 .txt
- eclipse - 在“启动 GlassFish 5 [domain1]”期间发生内部错误。找不到基本名称 sun.util.logging.resources.logging 的捆绑包,语言环境 en_DE
- command-line-interface - 使用 Hyperledger Fabric CLI 进行生产?
- javascript - ReactJS 路由器没有导航到指定的组件
- android - 如何将 PagerTabStrip 与 ViewPager2 一起使用
- php - 从类中的表包装器调用两个方法
- angular - 将键值映射到数据中的其他值
- ios - trailingSwipeActionsConfigurationForRowAt 无法稳定工作