WRF如何批量输出文件添加或删除文件名后缀

本文介绍了如何使用Python脚本批量为指定路径下的wrfout_d01开头的文件添加.nc后缀,并提供了解决添加后可能产生的重复后缀的方法,以及删除多余后缀的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 批量添加文件名后缀

#1----批量添加文件名后缀(.nc)。

#指定wrfout文件所在的文件夹
path = "/mnt/wtest1/"

#列出路径path下所有的文件
file_names = os.listdir(path)    

#遍历在path路径下所有以wrfout_d01开头的文件,在os.path.basename()返回的一个代表指定路径基本名称的字符串值后加入“.nc”后缀,再重命名文件。
for file in file_names:
    if file[0:10] != 'wrfout_d01':
        continue
    base_name = os.path.basename(file)
    new_n = base_name + '.nc'
    os.rename(os.path.join(path, file), os.path.join(path, new_n))

#建立空列表,选取path文件路径下所有前缀名为wrfout_d01的nc文件填充该列表
list_names = []
for ncfile in os.listdir(path):
    if ncfile[0:10] != 'wrfout_d01':    #通过索引选择想要的数据,可以按照需要进行更改
        continue
    list_names.append(ncfile)

#将模拟结果文件名按照时间进行排序
list_names_sort = np.sort(list_names)

2.批量删除文件名后缀

假如运行了两遍添加.nc后缀的代码,生成了.nc.nc后缀命名的文件名,如何批量删掉一组.nc后缀?

# coding:utf-8
#删除文件名后缀
import os, shutil

rootdir = path        # 原始带有后缀名的文件存放路径
remove_path = '/mnt/wtest1/removenc/'   # 去除了后缀名的文件存放路径,路径必须存在。

# 修改文件名
def renameFile(oldname, newname):
    print("oldname:", oldname)
    print("newname:", newname)
    # os.rename(oldname, newname)
    shutil.copyfile(oldname, newname)    #shutil.copyfile(src, dst):将名为src的文件的内容(无元数据)复制到名为dst的文件中 。
    # shutil.move(newname,remove_path)    #shutil.move(src, dst):将名为src的文件夹中的内容(无元数据)递归移动到名为dst的文件夹中,在此的作用同shutil.copyfile。


# 列出文件
def listTxtFile(filepath):
    if os.path.isfile(filepath) and ".nc" or ".nc.nc"== filepath[-6:]:
        #根据后缀名的长度设置,.nc.nc为[-6:]。 

        oldName = filepath
        newName = oldName[:-3]      #根据所要保存的后缀名的长度设置
        renameFile(oldName, newName)
        shutil.move(newName, remove_path)
        
# 遍历目录下所有的文件,
def listPath(filepath):
    fileList = os.listdir(filepath)

    for file in fileList:
        files = os.path.join(filepath, file)
        if os.path.isdir(files):
            listPath(files)
        else:
            listTxtFile(files)

if __name__ == "__main__":
    listPath(rootdir)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值