为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据文件名将多个文件从一个文件夹中分离到单独的文件夹中?

如何根据文件名将多个文件从一个文件夹中分离到单独的文件夹中?

aluckdog 2023-02-12 19:05:06
当前文件组织如下所示:Species_name1.ascSpecies_name1.csvSpecies_name1_Averages.csv......Species_name2.ascSpecies_name2.csvSpecies_name2_Averages.csv我需要找出一个脚本,它可以创建具有名称(Species_name1、Species_name2...等)的新目录,并且可以将文件从基本目录移动到适当的新目录中。import osimport globimport shutilbase_directory = [CURRENT_WORKING_DIRECTORY]with open("folder_names.txt", "r") as new_folders:     for i in new_folders:          os.mkdirs(base_directory+i)以上是我在基本目录中创建新目录时可以想到的示例。我知道如果我要使用 python,我将不得不使用 os、shutil 和/或 glob 模块中的工具。然而,确切的脚本正在逃避我,我的文件仍然杂乱无章。如果您有任何建议可以帮助我完成这个小任务,我将不胜感激。此目录中还有许多文件类型和后缀,但 (species_name?) 部分始终保持一致。以下是预期的层次结构:Species_name1-- Species_name1.asc-- Species_name1.csv-- Species_name1_Averages.csvSpecies_name2-- Species_name2.asc-- Species_name2.csv-- Species_name2_Averages.csv先感谢您!
查看完整描述

2 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

像这样使用简单的 shell 工具狂欢:


find . -type f -name '*Species_name*' -exec bash -c '

    dir=$(grep -oP "Species_name\d+" <<< "$1")

    echo mkdir "$dir"

    echo mv "$1" "$dir"

' -- {} \; 

echo 当输出看起来不错时删除命令。


查看完整回答
反对 回复 2023-02-12
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

假设您的所有asc文件都像示例中那样命名:


from os import  mkdir

from shutil import move

from glob import glob


fs = []

for file in glob("*.asc"):

    f = file.split('.')[0]

    fs.append(f)

    mkdir(f)

    

for f in fs:

    for file in glob("*.*"):

        if file.startswith(f):

            move(file, f'.\\{f}\\{file}')

更新:


假设您的所有Species_name.asc文件都像您的示例中那样标记:


from os import  mkdir

from shutil import move

from glob import glob


fs = [file.split('.')[0] for file in glob("Species_name*.asc")]

    

for f in fs:

    mkdir(f)

    for file in glob("*.*"):

        if file.startswith(f):

            move(file, f'.\\{f}\\{file}')


查看完整回答
反对 回复 2023-02-12
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信