Python shutil.move 无限复制
Python shutil.move copies endlessly
我制作了一个脚本,它从 src 文件夹中读取 pdf 文件,从文件中获取一些信息,然后重命名文件并将其移动到另一个位置。
每 5 秒执行一次。
由于 src 和 dest 在不同的磁盘上,我使用 shutil.move 而不是 os.rename。
因为 src 和 dest 在不同的磁盘上 shutil.move 将改为复制并删除源文件。
脚本运行良好,但有时源文件夹中的权限存在问题。
这会将源文件保留在源文件夹中并被无休止地复制,因为源文件无法删除。
我该如何解决这个问题?由于我没有保留原始 pdf 文件的名称,所以我不知道如何解决这个问题。
您是否考虑过跟踪上次移动文件的时间,然后仅移动具有较晚修改时间戳的源文件?
您可以调用 os.scandir()
列出源目录,获取每个条目的 DirEntry
信息。对于每个 entry
,检查 entry.is_file()
看它是否是一个文件,entry.name
看它是否以 '.pdf'
结尾,检查它的 entry.stat().st_mtime
看它是否更新比你上次扫描的要多。
您仍然可以调用 shutil.copyfile()
将每个选定的文件复制到目标目录中的新名称。
我制作了一个脚本,它从 src 文件夹中读取 pdf 文件,从文件中获取一些信息,然后重命名文件并将其移动到另一个位置。 每 5 秒执行一次。
由于 src 和 dest 在不同的磁盘上,我使用 shutil.move 而不是 os.rename。
因为 src 和 dest 在不同的磁盘上 shutil.move 将改为复制并删除源文件。
脚本运行良好,但有时源文件夹中的权限存在问题。 这会将源文件保留在源文件夹中并被无休止地复制,因为源文件无法删除。
我该如何解决这个问题?由于我没有保留原始 pdf 文件的名称,所以我不知道如何解决这个问题。
您是否考虑过跟踪上次移动文件的时间,然后仅移动具有较晚修改时间戳的源文件?
您可以调用 os.scandir()
列出源目录,获取每个条目的 DirEntry
信息。对于每个 entry
,检查 entry.is_file()
看它是否是一个文件,entry.name
看它是否以 '.pdf'
结尾,检查它的 entry.stat().st_mtime
看它是否更新比你上次扫描的要多。
您仍然可以调用 shutil.copyfile()
将每个选定的文件复制到目标目录中的新名称。