首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在所有子目录中查找并复制文件?

如何在所有子目录中查找并复制文件?
EN

Stack Overflow用户
提问于 2020-11-03 16:38:46
回答 2查看 107关注 0票数 0

我需要一个在运行之后像这样工作的批处理程序:

I在批处理窗口中输入一个数字,它寻找一个名为C:/Print/

  • If的类似输入的文件,但是在C:/Print/64326/BCB/1234.tif

  • After中有.tif扩展名的文件不在C:/Print/中,那么它应该在所有子目录中查找这个文件,例如找到文件C:/Print/64326/BCB/1234.tif

  • After,它应该被复制到D:/HotFolder/

我设法创造了这样的东西,但首先,它不能正确工作,第二件事是,它是不普遍的。

代码语言:javascript
复制
import os, glob, time, shutil
os.chdir("C:/Print")
print("Scan the barcode.")
while True:
    barcode = input(">").upper()
    tif = f"{barcode}.tif"
    if os.path.isfile(tif):
        shutil.copy(tif, "D:/HotFolder//")
        print(f"File copied succesfully. {tif}")
        os.chdir("C:/Print/")
    elif not os.path.isfile(barcode):
        os.chdir(f"C:/Print/{barcode}")
        if os.path.isfile(tif):
            shutil.copy(tif, "D:/HotFolder/")
            print(f"File copied succesfully. {tif}")
            os.chdir("C:/Print/")
        elif not os.path.isfile(tif):
            os.chdir(f"C:/Print/{barcode}/FCB")
            if os.path.isfile(barcode):
                shutil.copy(tif, "D:/HotFolder/")
                print(f"File copied succesfully. {tif}")
                os.chdir("C:/Print/")
            elif not os.path.isfile(tif):
                os.chdir(f"C:/Print/{barcode}/FCS")
                if os.path.isfile(barcode):
                    shutil.copy(tif, "D:/HotFolder/")
                    print(f"File copied succesfully. {tif}")
                    os.chdir("C:/Print/")
                elif not os.path.isfile(tif):
                    os.chdir(f"C:/Print/{barcode}/BCB")
                    if os.path.isfile(barcode):
                        shutil.copy(tif, "D:/HotFolder/")
                        print(f"File copied succesfully. {tif}")
                        os.chdir("C:/Print/")
                    elif not os.path.isfile(tif):
                        os.chdir(f"C:/Print/{barcode}/BCS")
                        if os.path.isfile(barcode):
                            shutil.copy(tif, "D:/HotFolder/")
                            print(f"File copied succesfully. {tif}")
                            os.chdir("C:/Print/")
    else:
        print("Error.")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-04 01:15:28

这是我最初答案的完全修改版本,它是基于使用os.walk()函数的。现在它使用了来自Path模块的pathlib子类,这使得它几乎与@Andrei's answer完全相同。

原则上的区别在于,我已经将您在下面所要求的附加功能合并到了一个评论中。

代码语言:javascript
复制
from pathlib import Path
import shutil

root_dir = Path('C:/Print')
target_dir = Path('D:/HotFolder')
ext = '.tif'

while True:
    target_filename = (input("Barcode? ") + ext).casefold()

    for filename in root_dir.rglob('*' + ext):
        if filename.name.casefold() == target_filename:
            shutil.copy2(filename, target_dir)
            print(f'{filename.name} copied from {filename.parent} to {target_dir}')
            break  # Target found and copied.
    else:
        print(f'{target_filename} not found in {root_dir} directory')
票数 0
EN

Stack Overflow用户

发布于 2020-11-03 18:28:38

下面是一个小片段:

代码语言:javascript
复制
from pathlib import Path
from shutil import copyfile

input_dir = "C:/Print/"
output_dir = "D:/HotFolder/"

barcode = "1234"

for filename in Path(input_dir).rglob("*.tif"):
    if filename.name == barcode + ".tif":
        copyfile(filename, Path(output_dir, filename.name))
        break
else:
    print("Not found")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64666923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档