子目录中的python文件路径不正确

子目录中的python文件路径不正确,python,recursion,path,operating-system,filepath,Python,Recursion,Path,Operating System,Filepath,编辑:使用Python 3.7 | Win10 我已经阅读了很多关于用python处理路径的帖子。正在尝试一个小脚本,按上次修改的日期将所有文件和子目录文件排序到文件夹中 到目前为止,当获取它在开始时返回的子目录时,它只为一个问题工作,从而使最终的目录字符串base_dir/\subdir 这意味着第一组文件复制得很好,但子目录中的任何内容都会失败 想知道如何阻止这种情况发生时头疼。希望在屏幕休息后我能找到答案,但以防万一,如果这里有向导能帮忙,我将不胜感激 代码: 输出: subdir_sor

编辑:使用Python 3.7 | Win10

我已经阅读了很多关于用python处理路径的帖子。正在尝试一个小脚本,按上次修改的日期将所有文件和子目录文件排序到文件夹中

到目前为止,当获取它在开始时返回的子目录时,它只为一个问题工作,从而使最终的目录字符串base_dir/\subdir

这意味着第一组文件复制得很好,但子目录中的任何内容都会失败

想知道如何阻止这种情况发生时头疼。希望在屏幕休息后我能找到答案,但以防万一,如果这里有向导能帮忙,我将不胜感激

代码:

输出:

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