filename=文件夹名+filename (单个文件夹下的+Python)

本文介绍了一个使用Python编写的脚本,该脚本可以自动修改指定文件夹下所有文件的名称,新的文件名由文件夹名加上原文件名的序号组成。此方法适用于需要批量处理文件命名场景。
部署运行你感兴趣的模型镜像

改自:https://blog.youkuaiyun.com/xueaalei1/article/details/80941385

# 自动修改文件夹下所有文件的文件名. 文件名=文件夹名+序号
#
import os, time

firstfolder =r"D:\个人信息"


def changename(file):
    # 根据文件名改名. 改成 文件夹名+newname
    if os.path.isfile(file):
        filename = os.path.basename(file).split('.')[0]
        print(filename)
        fileextensions = os.path.basename(file).split('.')[1]
        print(fileextensions )
        filepath = os.path.dirname(file)
        foldername = filepath.split('\\')[-1]
        newfile = filepath + '\\' + foldername + '-' +filename + '.' + fileextensions
        print(newfile)
        try:
            os.rename(file, newfile)
        except FileExistsError:
            pass
    else:
        return False


import os


def getlist(folder):
    # 读取该文件夹下所有的文件路径

    list = []
    if os.path.isdir(folder):
        for row in os.listdir(folder):
            list.append(folder + '\\' + row)
    else:
        pass
    return list



list = []
list=getlist(firstfolder)

for file in list:
    print(file)
    changename(file)
print('done')


您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

当你执行 `filename = results['filename'][0]` 时出现错误,我们需要先明确**具体是什么错误**。常见的错误类型有: --- ### ❌ 常见错误及解决方案 #### ✅ 错误1:`KeyError: 'filename'` 表示字典 `results` 中没有 `'filename'` 这个键。 ```python # 示例 results = {'name': ['a.txt'], 'size': [100]} filename = results['filename'][0] # KeyError! ``` ##### ✅ 解决方案:使用 `.get()` 安全获取,默认为空列表 ```python filename_list = results.get('filename', []) if filename_list: filename = filename_list[0] else: filename = None # 或者设为默认值 print(filename) ``` 或者一行写法(带默认): ```python filename = results.get('filename', [None])[0] ``` > 如果键不存在或列表为空,`filename` 将是 `None`。 --- #### ✅ 错误2:`IndexError: list index out of range` 说明 `results['filename']` 存在,但它是空列表 `[]`。 ```python results = {'filename': []} filename = results['filename'][0] # IndexError! ``` ##### ✅ 解决方案:先判断是否非空 ```python if results.get('filename') and len(results['filename']) > 0: filename = results['filename'][0] else: filename = None print(filename) ``` 或者更简洁地利用短路逻辑: ```python filename = results['filename'][0] if results.get('filename') else None ``` --- #### ✅ 错误3:`TypeError: 'str' object is not subscriptable` 说明 `results['filename']` 是一个字符串,而不是列表! ```python results = {'filename': 'file1.txt'} filename = results['filename'][0] # 返回的是 'f',不是整个文件! ``` 你本意可能是取文件字符串本身,结果却取了第一个字符 `'f'`。 ##### ✅ 正确做法:确认数据结构 ```python # 如果是单个字符串,直接使用即可 filename = results['filename'] # → 'file1.txt' # 如果不确定是列表还是字符串 value = results.get('filename') if isinstance(value, (list, tuple)): filename = value[0] if value else None elif isinstance(value, str): filename = value else: filename = None ``` --- #### ✅ 错误4:`TypeError: 'NoneType' object is not subscriptable` 说明 `results['filename']` 是 `None` ```python results = {'filename': None} filename = results['filename'][0] # TypeError! ``` ##### ✅ 防御性编程写法: ```python filename = None if results.get('filename') and isinstance(results['filename'], (list, tuple)): filename = results['filename'][0] elif isinstance(results['filename'], str): filename = results['filename'] ``` --- ### ✅ 推荐的健壮写法(综合处理所有情况) ```python def get_first_filename(results): value = results.get('filename') if not value: # None or empty return None if isinstance(value, (list, tuple)): return value[0] elif isinstance(value, str): return value return None # 其他未知类型 filename = get_first_filename(results) print(filename) ``` --- ### 🔍 调试建议 在出错时添加调试信息: ```python print("results keys:", results.keys()) print("results['filename'] =", results.get('filename')) print("type of filename field:", type(results.get('filename'))) ``` 这能帮你快速定位问题。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值