Last active
November 12, 2020 09:45
-
-
Save silviaclaire/f77b6c35492f2f77a2c27e3ad7196d99 to your computer and use it in GitHub Desktop.
file_organizer.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
import re | |
import shutil | |
ROOT_DIR = "./" | |
# “数字_”以外的自定义文件夹写这里 | |
CUSTOM_READ_DIR = [ | |
"custom_folder_1", | |
"custom_folder_2", | |
] | |
class SubFolder: | |
TXT = 'txt' | |
BAR = 'bar' | |
NO_BAR = 'no-bar' | |
def move_file(src_filepath, dest_dir, sub_folder): | |
filename = os.path.basename(src_filepath) | |
dest_folderpath = os.path.join(dest_dir, sub_folder) | |
dest_filepath = os.path.join(dest_folderpath, filename) | |
os.makedirs(dest_folderpath, exist_ok=True) | |
shutil.move(src_filepath, dest_filepath) | |
print('move done: %s to %s' % (filename, dest_filepath)) | |
for src_dir in os.listdir(ROOT_DIR): | |
src_folder_name = os.path.basename(src_dir) | |
# src_dir: %d_* or custom folders | |
if re.match(r"^\d+_", src_folder_name) or src_folder_name in CUSTOM_READ_DIR: | |
# dest_dir: %d_*/dest | |
dest_dir = os.path.join(src_dir, 'dest') | |
# if dest already exists | |
if os.path.exists(dest_dir): | |
print(f'{dest_dir} already exists') | |
exit(-1) | |
for root, dirs, files in os.walk(src_dir): | |
for filename in files: | |
name, ext = os.path.splitext(filename) | |
filepath = os.path.join(root, filename) | |
if ext.lower() == '.jpg': | |
if 'Exp' in name: | |
move_file(filepath, dest_dir, SubFolder.BAR) | |
else: | |
move_file(filepath, dest_dir, SubFolder.NO_BAR) | |
elif ext.lower() == '.txt': | |
move_file(filepath, dest_dir, SubFolder.TXT) | |
else: | |
print('skipped: %s' % filename) | |
else: | |
print('skipped: %s' % src_folder_name) | |
print('done') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment