Python -自动将文件移动到与其相应编号对应的文件夹中

vlurs2pr  于 2022-12-14  发布在  Python
关注(0)|答案(2)|浏览(157)

我有一个脚本,采取cmd参数,并将其移动到文件夹与各自的号码。
例如,我有20个名为Episode 1 through Episode 20的文件夹,总共有120个文件,每个文件夹(file1-ep 1, file2-ep1 would move into folder "episode 1", all the way to file1-ep20, file2-ep20 would move into folder "episode 20", etc)有5个文件。
我已经有了移动文件的脚本,它只需要我输入cmd行参数move.py 1move.py 2等。
基本上,我希望程序自动循环,而不是要求用户输入(我只需要提供开始和停止的数字)我如何才能使一个循环,使它移动所有相应的文件到文件夹中没有任何用户输入?
我现在的剧本

import os
import sys
import shutil

path = "/Users/Macbook/Final Cut Pro/"

destination_path = f"/Users/Macbook/Final Cut Pro/episode {sys.argv[1]}/"

for (root, dirs, file) in os.walk(path):
    for f in file:
        f = f.lower()
        if check_file(sys.argv[1])in f:
            source = path + f
            destination = destination_path + f
            print(f)
            # shutil.move(source, destination)

我试过把嵌套的for循环放到另一个for循环中。

for i in range (1,21)

    for loop
    for loop
3wabscal

3wabscal1#

结果证明我的外循环想法是正确的,只是我使用的是sys.argv[i]而不是i。我还必须将目标路径移动到循环内部。

for i in range(int(sys.argv[1]), int(sys.argv[2]) + 1):
    destination_path = f"/Users/Macbook/Final Cut Pro/episode {i}/"
    for f in os.listdir(path):
        if os.path.isfile(os.path.join(path, f)):
            f = f.lower()
            if checked_files(i):
               #move files
6uxekuva

6uxekuva2#

如果你的文件名是在以下格式file1-ep 1.they你尝试这个

start_number = 1
end_number = 20
for i in range(start_number, end_number+1):
    for (root, dirs, file) in os.walk(path):
        for f in file:
            f = f.lower()
            if i == int(re.findall(r'\d+', f)[0]):
                source = path + f
                destination = destination_path + f
                print(f)
                shutil.move(source, destination)

相关问题