批量更改文件名,按比例随机将文件夹内数据分两类,提取指定扩展名文件

批量更改文件名(从指定数字)

import os
path = input('请输入文件路径: ')
path = path + '/'
file_type = input('请输入文件格式: ')
start_with = int(input('请输入起始编号: '))


fileList = os.listdir(path)
n = 0
for i in fileList:
    name_old = path + os.sep + fileList[n]
    name_str = str(n + start_with)
    # name_str = name_str.zfill(4)     # 字符串前面补零
    name_new = path + name_str + '.' + file_type
    os.rename(name_old, name_new)
    n += 1

按比例随机将文件夹内数据分两类

import os
import random
import shutil

random.seed(0)  # 设置随机种子,保证随机结果可复现

files_path = input("请输入文件夹路径:")
assert os.path.exists(files_path), "path: '{}' does not exist.".format(files_path)

split_rate = float(input("请输入验证集所占比例(例如0.5):"))
file_coping = []
for file_name in os.listdir(files_path):
    file_coping.append(files_path + '/' + file_name)
files_num = len(file_coping)
val_index = random.sample(range(0, files_num), k=int(files_num*split_rate))
train_files = []
val_files = []
for index, file_name in enumerate(file_coping):
    if index in val_index:
        val_files.append(file_name)
    else:
        train_files.append(file_name)
folder_train = files_path+'/splited/train'
folder_val = files_path+'/splited/val'

if not os.path.exists(folder_train):
    os.makedirs(folder_train)
if not os.path.exists(folder_val):
    os.makedirs(folder_val)
for item in file_coping:
    if item in train_files:
        shutil.copy(item, folder_train)
    else:
        shutil.copy(item, folder_val)

try:
    train_f = open(files_path + "/splited/train.txt", "x")
    eval_f = open(files_path + "/splited/val.txt", "x")
    train_f.write("\n".join(train_files))
    eval_f.write("\n".join(val_files))
except FileExistsError as e:
    print(e)
    exit(1)
print("分离成功!!!其中训练集数据 {} 个,验证集数据 {} 个。".format(len(train_files), len(val_files)))

提取指定扩展名文件

import os
import shutil
folder_old = input("请输入文件夹路径:")
folder_new = input("请输入保存路径:")
file_type = input("请输入希望复制的文件类型:")
file_saving = []
for filename in os.listdir(folder_old):
    if os.path.splitext(filename)[1] == '.' + file_type:
        file_saving.append(folder_old + '/' + filename)
if not os.path.exists(folder_new):
    os.makedirs(folder_new)
for item in file_saving:
    shutil.copy(item, folder_new)
print("成功复制 {} 个文件到 {}!!!".format(len(file_saving), folder_new))

结尾

菜鸟上路,求高手带。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值