You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用glob编写文件重命名脚本时遇NameError: name 'my_gfile'未定义

问题分析与修正方案

错误根源

  1. 变量作用域问题:my_gfile是for循环的局部变量,仅在循环内部有效,循环外调用必然触发NameError。
  2. 逻辑位置错误:重命名相关代码放在循环外,无法遍历处理每个匹配到的文件。
  3. 格式字符串错误:strftime('%Y%m%d"')里多了转义双引号",会导致文件名包含多余引号。
  4. 文件名冗余:原文件已是.csv后缀,直接拼接会生成xxx.csv20240520.csv这类错误文件名。

修正后的代码

from datetime import datetime
import os
import glob

# 遍历所有匹配的CSV文件
for my_gfile in glob.glob('/root/files/SEN*.csv'):
    print(my_gfile)
    # 生成纯净的日期字符串
    date_string = datetime.today().strftime('%Y%m%d')
    # 分离原文件名与后缀,避免重复添加.csv
    file_path, file_ext = os.path.splitext(my_gfile)
    # 构造规范的新文件名
    new_name = f"{file_path}_{date_string}{file_ext}"
    # 执行重命名操作
    os.rename(my_gfile, new_name)

核心修改点

  • 将所有文件处理逻辑(日期生成、新文件名构造、重命名)移入for循环内部,确保每个匹配文件都能被处理。
  • 移除date_string中的多余转义引号,保证日期格式正确。
  • 使用os.path.splitext分离文件名与后缀,避免生成重复后缀的错误文件名。
  • 用f-string简化新文件名拼接,提升代码可读性。

内容的提问来源于stack exchange,提问作者Rex Skys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:06:26