我有一个.txt文件,其中包含以下结构:
2 PNEUMONIA/person888_bacteria_2812.jpeg
2 PNEUMONIA/person1209_bacteria_3161.jpeg
2 PNEUMONIA/person1718_bacteria_4540.jpeg
2 PNEUMONIA/person549_bacteria_2303.jpeg
2 PNEUMONIA/person831_bacteria_2742.jpeg
2 PNEUMONIA/person1571_bacteria_4108.jpeg
1 COVID-19/4-x-day1.jpg
0 HEALTHY/IM-0486-0001.jpeg此外,还有三个文件夹:
coronavirus
我需要创建一个文件夹,其中包含在这个.txt文件中指定的图像。因此,我的问题是如何读取.txt文件并将图像从这些文件夹移到新的文件夹中?
发布于 2020-05-24 09:04:54
要读取.txt文件:
file = open("path to the file", "r") #r is for read
mylist = file.readlines() #each line will be a new element of mylist
file.close() #don't forget to close it所以如果你做了print(mylist),你就可以得到:
["2 PNEUMONIA/person888_bacteria_2812.jpeg", "2 PNEUMONIA/person1209_bacteria_3161.jpeg", "2 PNEUMONIA/person1718_bacteria_4540.jpeg", "2 PNEUMONIA/person549_bacteria_2303.jpeg", "2 PNEUMONIA/person831_bacteria_2742.jpeg", "2 PNEUMONIA/person1571_bacteria_4108.jpeg", "1 COVID-19/4-x-day1.jpg", "0 HEALTHY/IM-0486-0001.jpeg"]所以你可以用for循环遍历所有的元素.那么如何创建文件夹和文件呢?
要创建文件夹,请执行以下操作:
import os
dirName = 'your_path'
try:
os.mkdir(dirName)
print("Directory " , dirName , " Created ")
except FileExistsError:
print("Directory " , dirName , " already exists")这将创建一个文件夹,但如果它已经存在,则不会这样做。
然后,移动文件:
import shutil, os
for f in mylist:
shutil.move(f, dirName)在前面的代码中使用dirName。因此,完整的代码如下:
import shutil, os
file = open("path to the file", "r")
mylist = file.readlines()
file.close()
dirName = 'your_path'
try:
os.mkdir(dirName)
print("Directory " , dirName , " Created ")
for f in mylist:
shutil.move(f, dirName)
except FileExistsError:
print("Directory " , dirName , " already exists")但是,如果我们考虑你的档案:
2 PNEUMONIA/person888_bacteria_2812.jpeg
2 PNEUMONIA/person1209_bacteria_3161.jpeg
2 PNEUMONIA/person1718_bacteria_4540.jpeg
2 PNEUMONIA/person549_bacteria_2303.jpeg
2 PNEUMONIA/person831_bacteria_2742.jpeg
2 PNEUMONIA/person1571_bacteria_4108.jpeg
1 COVID-19/4-x-day1.jpg
0 HEALTHY/IM-0486-0001.jpeg也许第一个字符,这些数字,不需要在文件的名字?然后,只需寻找分裂的方法和乐趣!
移动文件时的警告:
当我们这样做时:
for f in mylist:
shutil.move(f, dirName)我们假设脚本与图片位于同一个位置,所以它只接受f作为路径,并且它是好的。但是,如果它位于其他地方,您应该这样做:
for f in mylist:
shutil.move("path_to_the_original_folder_+_an_\_at_the_end"+f, dirName)例如:
for f in mylist:
shutil.move("C:\Covid\"+f, dirName)就在这儿!
发布于 2020-05-24 10:13:08
码
# source folder such as '.' or os.getcwd(), etc.
src ='source path'
# desitination folder such as '.' or os.getcwd(), etc.
dst = 'destination folder'
with open('file.txt') as file:
for line in file:
# Get parent folder and filename
# such as PNEUMONIA/person888_bacteria_2812.jpeg"
relative_path = line.rstrip().split(' ', 1)[1].strip()
# Full source path (prepend src to relative path)
src_path = os.path.join(src, relative_path)
# Destination folder
destination = os.path.join(dst, path)
# make directory if it does not exists
# Path(destination).parent is parent folder of
# destination
os.makedirs(Path(destination).parent, exist_ok = True)
# Move file
shutil.move(src_path, destination)发布于 2020-05-24 09:15:13
使用以下代码:
import shutil
new_path = (r"C:\your\new\path")
file = open(r"C:\your\list\path\list.txt","r")
read_lines= file.readlines()
file.close()
for path in read_lines:
shutil.copy(path.replace("\n",""),new_path)确保列表中的路径如下所示:
C:\like\this\path\filename.jpeg
C:\like\this\path\filename.jpeg
C:\like\this\path\filename.jpeg
C:\like\this\path\filename.jpeghttps://stackoverflow.com/questions/61983581
复制相似问题