有个文件夹,里面有很多子文件夹,子文件夹里有很多文件。可能存在好几个子文件夹有文件相同,写个python脚本实现如果子文件夹里有文件相同,就合并这些文件夹里的文件并删除空文件夹
时间: 2023-04-01 18:04:47 浏览: 70
你好,这是一个技术问题,我可以回答。您可以使用Python的os和shutil模块来实现这个功能。首先,您需要遍历文件夹中的所有子文件夹,找到所有具有相同文件的子文件夹。然后,您可以将这些文件夹中的文件合并到一个文件夹中,并删除原始文件夹。以下是一个简单的示例代码:
```python
import os
import shutil
# 遍历文件夹
def traverse_folder(folder_path):
folders = []
for root, dirs, files in os.walk(folder_path):
for dir in dirs:
folders.append(os.path.join(root, dir))
return folders
# 查找相同文件
def find_duplicate_files(folders):
files_dict = {}
for folder in folders:
for root, dirs, files in os.walk(folder):
for file in files:
file_path = os.path.join(root, file)
if file in files_dict:
files_dict[file].append(file_path)
else:
files_dict[file] = [file_path]
return {k: v for k, v in files_dict.items() if len(v) > 1}
# 合并文件夹
def merge_folders(files_dict):
for k, v in files_dict.items():
new_folder = os.path.join(os.path.dirname(v[]), k.split('.')[])
if not os.path.exists(new_folder):
os.mkdir(new_folder)
for file_path in v:
shutil.move(file_path, new_folder)
shutil.rmtree(os.path.dirname(file_path))
# 主函数
if __name__ == '__main__':
folder_path = 'your_folder_path'
folders = traverse_folder(folder_path)
files_dict = find_duplicate_files(folders)
merge_folders(files_dict)
```
请注意,此代码仅是一个示例,您需要根据您的实际情况进行修改。