python 自动分类照片,把所有文件夹,子文件夹,里面相同的名字,拉到同名字的文件夹内
时间: 2023-08-17 14:05:25 浏览: 94
可以使用Python中的os模块和shutil模块来实现自动分类照片的功能。具体步骤如下:
1. 遍历所有文件夹和子文件夹,获取所有文件的路径。
```python
import os
# 遍历所有文件夹和子文件夹,获取所有文件的路径
def get_all_files(path):
file_list = []
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
file_list.append(file_path)
return file_list
```
2. 根据文件名创建同名的文件夹。
```python
import os
# 根据文件名创建同名的文件夹
def create_folders(file_list):
for file_path in file_list:
file_name = os.path.basename(file_path)
folder_path = os.path.join(os.path.dirname(file_path), file_name.split('.')[0])
if not os.path.exists(folder_path):
os.makedirs(folder_path)
```
3. 将相同名字的文件移动到同名文件夹内。
```python
import os
import shutil
# 将相同名字的文件移动到同名文件夹内
def move_files(file_list):
for file_path in file_list:
file_name = os.path.basename(file_path)
folder_path = os.path.join(os.path.dirname(file_path), file_name.split('.')[0])
shutil.move(file_path, os.path.join(folder_path, file_name))
```
完整代码如下:
```python
import os
import shutil
# 遍历所有文件夹和子文件夹,获取所有文件的路径
def get_all_files(path):
file_list = []
for root, dirs, files in os.walk(path):
for file in files:
file_path = os.path.join(root, file)
file_list.append(file_path)
return file_list
# 根据文件名创建同名的文件夹
def create_folders(file_list):
for file_path in file_list:
file_name = os.path.basename(file_path)
folder_path = os.path.join(os.path.dirname(file_path), file_name.split('.')[0])
if not os.path.exists(folder_path):
os.makedirs(folder_path)
# 将相同名字的文件移动到同名文件夹内
def move_files(file_list):
for file_path in file_list:
file_name = os.path.basename(file_path)
folder_path = os.path.join(os.path.dirname(file_path), file_name.split('.')[0])
shutil.move(file_path, os.path.join(folder_path, file_name))
if __name__ == '__main__':
path = '/path/to/folder'
file_list = get_all_files(path)
create_folders(file_list)
move_files(file_list)
```
阅读全文