我需要一个在运行之后像这样工作的批处理程序:
I在批处理窗口中输入一个数字,它寻找一个名为C:/Print/
C:/Print/64326/BCB/1234.tif
C:/Print/中,那么它应该在所有子目录中查找这个文件,例如找到文件C:/Print/64326/BCB/1234.tif
D:/HotFolder/我设法创造了这样的东西,但首先,它不能正确工作,第二件事是,它是不普遍的。
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.")发布于 2020-11-04 01:15:28
这是我最初答案的完全修改版本,它是基于使用os.walk()函数的。现在它使用了来自Path模块的pathlib子类,这使得它几乎与@Andrei's answer完全相同。
原则上的区别在于,我已经将您在下面所要求的附加功能合并到了一个评论中。
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')发布于 2020-11-03 18:28:38
下面是一个小片段:
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")https://stackoverflow.com/questions/64666923
复制相似问题