如果文件夹结构更复杂,如何递归地查找和处理子目录中的.dat文件?
时间: 2024-09-24 13:28:48 浏览: 38
如果文件夹结构复杂,你可以使用Python的`os`和`pathlib`库来实现递归查找。这里是一个示例函数,它会遍历指定根目录及其所有子目录,找到所有的`.dat`文件并按照上面的方法处理它们:
```python
from pathlib import Path
def recursive_process_files(root_dir, output_folder):
def process_subdir(sub_dir):
dat_files = sub_dir.glob('**/*.dat') # 递归搜索dat文件
for file_path in dat_files:
base_name = file_path.stem # 去除扩展名
processed_data = process_file(file_path)
output_file = output_folder / (base_name + '.processed.csv') # 输出文件路径
processed_data.to_csv(output_file, index=False)
root_path = Path(root_dir)
if root_path.is_dir(): # 检查是否为目录
with suppress(FileExistsError): # 创建输出目录
os.makedirs(output_folder, exist_ok=True)
for subdir in root_path.iterdir():
if subdir.is_dir():
process_subdir(subdir)
else:
continue # 忽略非目录项
else:
print(f"根目录 {root_dir} 不是有效的目录.")
# 替换 'your_root_directory' 为你的实际根目录
recursive_process_files('your_root_directory', 'data/merged_recursive')
```
这个函数会创建一个名为`output_folder`的新目录,用于存储处理过的文件。`**/*.dat`通配符表示在当前目录及其所有子目录下查找`.dat`文件。
阅读全文