如何使用文件中的名称将图像复制到文件夹中
How to copy image in a folder using its name from a file
我正在尝试将图像从文件夹复制到另一个文件中存在的同名文件夹
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 条件下的(行)但什么也没得到,而 file_txt 包含图像的名称,而 train 是一个包含图像的文件夹本身
你的代码乱七八糟,但我认为你的问题是你尝试在没有 .jpg
的情况下复制 COCO_train2014_000000110431
但你必须复制 COCO_train2014_000000110431.jpg
其他问题可能是:您在使用 .strip()
之前比较 line
,所以它可能在末尾有 \n
。所以你比较if name<enter> == name
。如果你 运行 print(line)
那么名称可能看起来不错(因为 \n
不可见)但是如果你添加一些字符 print(f">>>{line}<<<")
那么你可能会看到 <<<
换行。
但我会以不同的方式进行 - 没有 listdir()
但有 os.path.exists()
import os
import shutil
src = 'train'
dst = 't'
os.makedirs(dst, exist_ok=True) # create destination folder if not exists
filenames = open("file_txt.txt").read().split('\n')
for name in filenames:
if name: # to skip empty lines
fullpath = os.path.join(src, name + '.jpg')
if os.path.exists(fullpath):
print('coping:', fullpath)
shutil.copy(fullpath, dst)
else:
print('SKIPING:', fullpath)
我正在尝试将图像从文件夹复制到另一个文件中存在的同名文件夹
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 条件下的(行)但什么也没得到,而 file_txt 包含图像的名称,而 train 是一个包含图像的文件夹本身
你的代码乱七八糟,但我认为你的问题是你尝试在没有 .jpg
的情况下复制 COCO_train2014_000000110431
但你必须复制 COCO_train2014_000000110431.jpg
其他问题可能是:您在使用 .strip()
之前比较 line
,所以它可能在末尾有 \n
。所以你比较if name<enter> == name
。如果你 运行 print(line)
那么名称可能看起来不错(因为 \n
不可见)但是如果你添加一些字符 print(f">>>{line}<<<")
那么你可能会看到 <<<
换行。
但我会以不同的方式进行 - 没有 listdir()
但有 os.path.exists()
import os
import shutil
src = 'train'
dst = 't'
os.makedirs(dst, exist_ok=True) # create destination folder if not exists
filenames = open("file_txt.txt").read().split('\n')
for name in filenames:
if name: # to skip empty lines
fullpath = os.path.join(src, name + '.jpg')
if os.path.exists(fullpath):
print('coping:', fullpath)
shutil.copy(fullpath, dst)
else:
print('SKIPING:', fullpath)