【发布时间】:2021-12-28 17:01:29
【问题描述】:
我正在尝试将图像从文件夹复制到另一个具有相同名称的文件中
dst="t"
path = 'train'
f = open("file_txt.txt",'r')
files = os.listdir(path)
for i in files :
if i.endswith('.jpg'):
j=i.rsplit('.', 1)[0]
#print(j)
lines = f.readlines()
for line in lines:
#print(line)
if line == j:
#print(line)
shutil.copy(path+'/'+line.strip(), dst)
j 包含类似
COCO_train2014_000000110431
COCO_train2014_000000110437
COCO_train2014_000000110439
行包含类似
COCO_train2014_000000206463
COCO_train2014_000000206465
COCO_train2014_000000206467
但是 new_folder 是空的,我尝试打印存在于 if 条件但什么也没有得到的 print(line),而 file_txt 包含图像的名称,而 train 是一个包含图像本身的文件夹
【问题讨论】:
-
您只能阅读
lines一次——在所有for-loop 之前。您还必须记住,它可能会在最后给出带有\n的行,因此您可能需要使用line.strip()。如果您有空行,那么您可以跳过它们并仅在if line: ...时运行 -
首先您可以使用
print()来查看您在变量中真正拥有的内容以及执行了哪部分代码 - 它被称为"print debuging" -
可能从文件中获取文件名,创建
/full/path/to/image.jpg,然后使用os.path.exists(...)检查它是否存在,然后复制它。这样你就不需要listdir(),也不需要嵌套的for-loops。 -
如果您将文件读取为
f = open(...).read().split("\n"),那么您将获得没有\n'的名称,并且您可以在没有for line in lines: if line == j:的情况下检查if j in f: -
您的思维问题可能是您尝试在没有
.jpg的情况下复制COCO_train2014_000000110431,但您必须复制COCO_train2014_000000110431.jpg
标签: python python-3.x directory