首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从.txt中选择特定文件并创建文件夹

如何从.txt中选择特定文件并创建文件夹
EN

Stack Overflow用户
提问于 2020-05-24 08:46:24
回答 3查看 139关注 0票数 0

我有一个.txt文件,其中包含以下结构:

代码语言:javascript
复制
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

  • Pneumonia:包含肺图像,pneumonia

  • Healthy:包含肺图像,有健康肺图像。

我需要创建一个文件夹,其中包含在这个.txt文件中指定的图像。因此,我的问题是如何读取.txt文件并将图像从这些文件夹移到新的文件夹中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-24 09:04:54

要读取.txt文件:

代码语言:javascript
复制
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),你就可以得到:

代码语言:javascript
复制
["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循环遍历所有的元素.那么如何创建文件夹和文件呢?

要创建文件夹,请执行以下操作:

代码语言:javascript
复制
import os
dirName = 'your_path'
try:
    os.mkdir(dirName)
    print("Directory " , dirName ,  " Created ") 
except FileExistsError:
    print("Directory " , dirName ,  " already exists")

这将创建一个文件夹,但如果它已经存在,则不会这样做。

然后,移动文件:

代码语言:javascript
复制
import shutil, os
for f in mylist:
    shutil.move(f, dirName)

在前面的代码中使用dirName。因此,完整的代码如下:

代码语言:javascript
复制
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")

但是,如果我们考虑你的档案:

代码语言:javascript
复制
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

也许第一个字符,这些数字,不需要在文件的名字?然后,只需寻找分裂的方法和乐趣!

移动文件时的警告:

当我们这样做时:

代码语言:javascript
复制
for f in mylist:
    shutil.move(f, dirName)

我们假设脚本与图片位于同一个位置,所以它只接受f作为路径,并且它是好的。但是,如果它位于其他地方,您应该这样做:

代码语言:javascript
复制
for f in mylist:
    shutil.move("path_to_the_original_folder_+_an_\_at_the_end"+f, dirName)

例如:

代码语言:javascript
复制
for f in mylist:
    shutil.move("C:\Covid\"+f, dirName)

就在这儿!

票数 2
EN

Stack Overflow用户

发布于 2020-05-24 10:13:08

代码语言:javascript
复制
# 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)
票数 1
EN

Stack Overflow用户

发布于 2020-05-24 09:15:13

使用以下代码:

代码语言:javascript
复制
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)

确保列表中的路径如下所示:

代码语言:javascript
复制
C:\like\this\path\filename.jpeg
C:\like\this\path\filename.jpeg
C:\like\this\path\filename.jpeg
C:\like\this\path\filename.jpeg
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61983581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档