基于python根据txt存储的文件名,提取文件夹文件

这个问题是我在学习语义分割模型时遇到的,在这里记录一下!

val.txt存储的是验证集的文件名,需要根据这些文件名,将对应的文件提取到文件夹里。先来看一看val.txt存储的内容(每一行存储一个文件名,且不带后缀名):

 废话不多说,上代码!

#导入需要使用的python包
import shutil
 
# 根据txt文件中存储的文件名,提取对应的文件保存到另一个文件夹
 
data = []

#读取存储val.txt文件
for line in open("F:/Practice/test_02/VOCdevkit/VOC2007/ImageSets/Segmentation/val.txt", "r"):  # 设置文件对象并读取每一行文件
    data.append(line)

#我的数据是jpg格式,如果你的数据是其他格式,则将下面代码中的jpg替换即可    
for a in data:

    #src是总文件夹
    src = 'F:/Practice/test_02VOCdevkit/VOC2007/JPEGImages//{}.jpg'.format(a[:-1])

    #dst是保存提取结果的文件夹
    dst = 'F:/Practice/test_02/VOCdevkit/VOC2007/Images_val/{}.jpg'.format(a[:-1])
    shutil.move(src, dst)

如果没有shutil,可以参考我的另一篇博客(博客链接),使用Anaconda安装shutil包。

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 以下是一个Python代码示例,可以从指定文件夹提取所有文件的去除后缀名的文件名,然后将它们打乱后写入到一个txt文件中: ```python import os import random # 指定文件夹路径 folder_path = "/path/to/folder/" # 获取所有文件名(包括扩展名) file_names = os.listdir(folder_path) # 去除扩展名,只保留文件名部分 file_names_without_extension = [os.path.splitext(file_name)[0] for file_name in file_names] # 打乱文件名列表 random.shuffle(file_names_without_extension) # 将文件名列表写入到txt文件中 with open("file_names.txt", "w") as f: for file_name in file_names_without_extension: f.write(file_name + "\n") ``` 这段代码首先使用`os.listdir()`函数获取指定文件夹下的所有文件名(包括扩展名)。然后,使用`os.path.splitext()`函数去除每个文件名的扩展名,只保留文件名部分。接着,使用`random.shuffle()`函数打乱文件名列表的顺序。最后,使用`open()`函数打开一个txt文件,并将打乱后的文件名列表写入到这个文件中。 ### 回答2: 在Python中,可以使用以下代码来实现将一个文件夹下的所有文件的去除后缀的文件名提取到一个txt文件中,并打乱顺序。 首先,我们需要引入os和random模块,来处理文件和打乱顺序的需求。 ```python import os import random ``` 然后,我们定义一个函数来遍历文件夹提取文件名: ```python def extract_file_names(folder_path): file_names = [] for file_name in os.listdir(folder_path): if os.path.isfile(os.path.join(folder_path, file_name)): file_names.append(os.path.splitext(file_name)[0]) # 去除后缀 return file_names ``` 接下来,我们可以调用该函数来提取文件夹下所有文件文件名: ```python folder_path = '文件夹路径' file_names = extract_file_names(folder_path) ``` 然后,我们可以使用random模块中的shuffle函数来打乱文件名的顺序: ```python random.shuffle(file_names) ``` 最后,我们可以将打乱后的文件名写入txt文件中: ```python with open('输出文件路径.txt', 'w') as file: for file_name in file_names: file.write(file_name + '\n') ``` 将以上代码整合在一起,即可得到如下完整代码: ```python import os import random def extract_file_names(folder_path): file_names = [] for file_name in os.listdir(folder_path): if os.path.isfile(os.path.join(folder_path, file_name)): file_names.append(os.path.splitext(file_name)[0]) # 去除后缀 return file_names folder_path = '文件夹路径' file_names = extract_file_names(folder_path) random.shuffle(file_names) with open('输出文件路径.txt', 'w') as file: for file_name in file_names: file.write(file_name + '\n') ``` 注意替换代码中的"文件夹路径"和"输出文件路径.txt"为实际的文件夹路径和输出文件路径。 ### 回答3: 要解决这个问题,我们可以使用Python的os和random模块。步骤如下: 1. 导入模块: ```python import os import random ``` 2. 遍历文件夹中的所有文件: ```python folder_path = '文件夹路径' # 指定文件夹路径 file_names = [] # 存储文件名 for root, dirs, files in os.walk(folder_path): for file in files: file_names.append(os.path.splitext(file)[0]) # 获取文件名,并去除后缀 ``` 3. 打乱文件名列表: ```python random.shuffle(file_names) ``` 4. 将文件名列表写入到txt文件中: ```python txt_file = '文件名.txt' # 指定txt文件路径 with open(txt_file, 'w') as f: for file_name in file_names: f.write(file_name + '\n') ``` 完整代码如下: ```python import os import random folder_path = '文件夹路径' # 指定文件夹路径 file_names = [] # 存储文件名 for root, dirs, files in os.walk(folder_path): for file in files: file_names.append(os.path.splitext(file)[0]) # 获取文件名,并去除后缀 random.shuffle(file_names) # 打乱文件名列表 txt_file = '文件名.txt' # 指定txt文件路径 with open(txt_file, 'w') as f: for file_name in file_names: f.write(file_name + '\n') ``` 以上代码会将文件夹路径下的所有文件的去除后缀的文件名提取到一个txt文件中,并且打乱了文件名的顺序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小郭学地信

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值