子目录中的python文件路径不正确
编辑:使用Python 3.7 | Win10 我已经阅读了很多关于用python处理路径的帖子。正在尝试一个小脚本,按上次修改的日期将所有文件和子目录文件排序到文件夹中 到目前为止,当获取它在开始时返回的子目录时,它只为一个问题工作,从而使最终的目录字符串base_dir/\subdir 这意味着第一组文件复制得很好,但子目录中的任何内容都会失败 想知道如何阻止这种情况发生时头疼。希望在屏幕休息后我能找到答案,但以防万一,如果这里有向导能帮忙,我将不胜感激 代码: 输出:子目录中的python文件路径不正确,python,recursion,path,operating-system,filepath,Python,Recursion,Path,Operating System,Filepath,编辑:使用Python 3.7 | Win10 我已经阅读了很多关于用python处理路径的帖子。正在尝试一个小脚本,按上次修改的日期将所有文件和子目录文件排序到文件夹中 到目前为止,当获取它在开始时返回的子目录时,它只为一个问题工作,从而使最终的目录字符串base_dir/\subdir 这意味着第一组文件复制得很好,但子目录中的任何内容都会失败 想知道如何阻止这种情况发生时头疼。希望在屏幕休息后我能找到答案,但以防万一,如果这里有向导能帮忙,我将不胜感激 代码: 输出: subdir_sor
subdir_sort.py
to_sort/1001001.jpg
to_sort/1001002.jpg
to_sort/1001003.jpg
to_sort/\subdir1002007.jpg
[Errno 2] No such file or directory: 'to_sort/\\subdir1002007.jpg'
to_sort/\subdir1002010.jpg
[Errno 2] No such file or directory: 'to_sort/\\subdir1002010.jpg'
to_sort/\subdir1002021.jpg
[Errno 2] No such file or directory: 'to_sort/\\subdir1002021.jpg'
[('to_sort/', '1001001.jpg', '21-9-2020'), ('to_sort/', '1001002.jpg', '21-9-2020'), ('to_sort/', '1001003.jpg', '21-9-2020'), ('to_sort/\\subdir', '1002007.jpg', '16-9-2020'), ('to_sort/\\subdir', '1002010.jpg', '16-9-2020'), ('to_sort/\\subdir', '1002021.jpg', '16-9-2020')]
Process finished with exit code 0
谢谢大家!
编辑:来自orlevii的回答使用了一个咒语。以下是更正的代码:
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
"""
for data in os.walk(SORT_DIR):
dir_path, folders, files = data
print(dir_path)
print(files)
for file in files:
try:
dir_for_stat = f'{dir_path}\{file}'
stats = os.stat(dir_for_stat)
date = date_from_seconds(stats)
file_list.append((dir_path, file, date))
os.makedirs(date, exist_ok=True)
print(f'{dir_path}\{file}')
shutil.copy(f'{dir_path}\{file}', f'{date}\{file}')
except Exception as _err:
print(_err)
continue
你在运行什么操作系统 我看到您正在将您的路径浓缩为:
path\u file=os.sep.join([path\u目录,文件名])
如果你在Windows上,这是错误的
要使其正常工作,您可以使用
path\u file=os.path.join(path\u目录,文件名)
第二,你自己实施扫描有什么原因吗
您可以使用os.walk
获取从给定根路径开始的所有文件/目录:
导入操作系统
SORT\u DIR='to\u SORT'
对于os.walk(SORT_DIR)中的数据:#从哪里开始搜索
目录路径、文件夹、文件=数据
#现在可以对'files'变量执行任何操作
top class谢谢!我将把新代码发布到我的问题中,供任何偶然发现这一点的人使用……出于好奇,我将使用什么使这个平台独立?os.path.join(…)
适用于所有平台
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
"""
for data in os.walk(SORT_DIR):
dir_path, folders, files = data
print(dir_path)
print(files)
for file in files:
try:
dir_for_stat = f'{dir_path}\{file}'
stats = os.stat(dir_for_stat)
date = date_from_seconds(stats)
file_list.append((dir_path, file, date))
os.makedirs(date, exist_ok=True)
print(f'{dir_path}\{file}')
shutil.copy(f'{dir_path}\{file}', f'{date}\{file}')
except Exception as _err:
print(_err)
continue