将文件移动到 Python 中相应的子目录

Moving files to corresponding subdirectory in Python

每周工作,我负责手动将100-200个文件从一个文件夹移动到相应的子文件夹中。这样做了几个星期后,我心想:这可以做得更快!

我在学校用过 Python 2.7 和 3.X,但主要是使用(非常)基本的搜索引擎和文本搜索。

我找到了另一个帖子,有人告诉我要使用 os.rename 或 shutil.move。我用 os.rename:

做了一个简单的测试
os.rename("path/to/current/file.foo", "path/to/new/desination/for/file.foo")

而且效果很好,到目前为止一切顺利。

有什么办法可以python运行遍历一个文件夹中的每一个文件,然后移动到另一个文件夹中相应的子目录中吗?原文目录包含所有文件,而目标目录包含所有文件夹。

每个文件(A_file、B_file 等)都与文件夹(A_folder、B_folder 等)同名,这意味着它们是顺序正确。

这让我觉得一个简单的迭代可以工作,如(更多的是算法而不是代码):

for file in original_dir
    move file to folder_x in tar_dir
    x += 1

显然这还不完整,但也许有人可以指出正确的方向。

这使目录递归。

os.makedirs(path)

因此,您将路径传递到您想要的目录。例如/path/to/ 您将跟进副本。

def move_file(new_path_to_file, file_to_move):
  file_name = file_to_move.split(os.path.sep)[-1]
  os.makedirs(new_path_to_file)
  os.rename(file_to_move, os.path.join(new_path_to_file, file_name))

您也可以通过传入文件名来简化操作。