python - 如何在所有子目录中查找文件并复制它?
问题描述
我需要一个批处理程序,它在运行后像这样工作:
- 我在批处理窗口中输入了一个数字
- 它会查找一个名为 like input 但扩展名为 .tif 的文件
C:/Print/
- 如果文件不在,
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.")
解决方案
这是一个小片段:
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")
推荐阅读
- java - 列计数与数据输入的第 1 行的值计数不匹配
- python - 如何在 Keras 中执行反卷积/反卷积?
- java - 带有 hibernate.cfg.xml 的 MappingException
- python - 命令行 arg 不导入脚本
- machine-learning - 机器学习 - 算法的特征排名
- php - 安装 jeremykenedy-laravel-logger 包后调用 laravel 5.2 中未定义的方法 [loadRoutesFrom] 错误
- python - 如何在tensorflow中实现ms-ssim和l1的混合损失函数
- javascript - 将angular 5组件的引用传递给angular js
- node.js - 适用于 Linux (WSL) 的 Windows 子系统使用与 Windows 共享的 Node.js 安装:Node.js npm 和 npx 二进制文件不起作用
- php - 如何将以下信息写入 VConnect 中的文件?