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

Windows环境GitHub Action读取日文文件名CSV文件报错求解

问题现象
  • 待读取目标CSV文件名为日文:202112_10エリア計.csv
  • 本地Windows环境下,以下pandas读取代码可正常运行:
pd.read_csv(file_path+'202112_10エリア計.csv')
  • 同Windows环境的GitHub Action中运行相同逻辑,抛出文件不存在错误:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\202112_10\u30a8\u30ea\u30a2\u8a08.csv'
  • 尝试通过csv_name = csv_name.decode('utf-8')对文件名做编码处理,触发新错误:
AttributeError: 'str' object has no attribute 'decode'
根因说明
  1. 手动解码报错原因:Python 3中字符串默认是Unicode类型的str对象,只有字节类型bytes支持decode()方法,str类型仅支持encode()方法,直接对字符串调用decode()必然触发属性错误。
  2. 文件找不到的核心原因不是GitHub Action不识别日文字符,而是Git拉取代码阶段默认开启了非ASCII文件名转义配置,导致工作目录内的实际文件名被转义,和代码中硬编码的文件名不匹配,和pandas、Windows系统编码无关。
解决方案

按优先级推荐以下两种可直接落地的方案:

  • 方案1:修改GitHub Action的checkout配置,保留原始文件名
    找到工作流文件中actions/checkout拉取代码的步骤,添加Git配置关闭非ASCII文件名转义,配置后原有读取代码无需任何修改即可正常运行:
    - uses: actions/checkout@v4
      env:
        GIT_CONFIG_PARAMETERS: "'core.quotepath=false'"
    
  • 方案2:动态匹配文件,避免硬编码日文文件名
    如果不希望修改Action配置,可以在读取前遍历目标目录,通过文件名前后缀特征匹配目标文件,从根源上规避文件名转义、编码不一致的问题,示例代码:
    import os
    import pandas as pd
    
    file_dir = "C:/" # 替换为实际文件存放目录
    target_csv = None
    for filename in os.listdir(file_dir):
        if filename.startswith("202112_10") and filename.endswith(".csv"):
            target_csv = os.path.join(file_dir, filename)
            break
    if not target_csv:
        raise FileNotFoundError("未找到匹配的月度统计CSV文件")
    df = pd.read_csv(target_csv)
    

注:该场景下不需要手动对文件名做编码/解码转换,所有手动转码的操作都无法解决Git拉取阶段文件名被修改的本质问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 22:48:18