使用Python 3.7 | WIN10
我读过很多关于处理 python 中的路径的文章。尝试使用一个小脚本将所有文件和子目录文件按上次修改日期排序到文件夹中。
到目前为止,它的工作原理都是为了一个问题,当获取子目录时,它会以 \ 开头返回,从而生成最终的目录字符串 base_dir/\subdir。
这意味着第一组文件可以正常复制,但子目录中的任何内容都会失败。
想要弄清楚如何阻止这种情况发生,我感到头疼。希望在屏幕中断后我能弄清楚,但以防万一,如果这里有任何向导可以提供帮助,我将不胜感激。
代码:
import os
import time
import datetime
import shutil
from typing import List, Tuple
SORT_DIR = r'to_sort/'
def date_from_seconds(file_stats):
"""
Takes an os.stats variable and return a date
Using the seconds elapsed since last modification
"""
seconds = time.ctime(file_stats.st_mtime)
date_filter = datetime.datetime.strptime(seconds, '%a %b %d %H:%M:%S %Y')
date_to_return = f'{date_filter.day}-{date_filter.month}-{date_filter.year}'
return date_to_return
def sort_files(path_directory: str, file_list: List[Tuple]):
"""
Lists the files in the sort directory
Uses recursion to obtain files from subdirectories
Copies files to a directory named according to their last modified date
"""
content_dir: List[str] = os.listdir(path_directory)
for filename in content_dir:
path_file = os.sep.join([path_directory, filename])
if os.path.isdir(path_file):
sort_files(path_file, file_list)
else:
try:
stats = os.stat(path_file)
date = date_from_seconds(stats)
file_list.append((path_directory, filename, date))
os.makedirs(date, exist_ok=True)
print(f'{path_directory}{filename}')
shutil.copy(f'{path_directory}{filename}', f'{date}/{filename}')
except Exception as _err:
print(_err)
continue
files: List[Tuple] = []
sort_files(SORT_DIR, files)
print(files)
蓝山帝景
相关分类