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

Python批量创建文件时文件名含问号问题求助,需写入API采集数据

问题解决:Python批量创建文件时文件名末尾带问号的修复

问题根源

你执行代码后生成的文件名末尾出现?,是因为读取ud_final_id.txt文件时,每行内容默认保留了换行符\n。这个不可见的换行符被拼接到文件名中,Linux系统下ls命令会将这类不可打印字符显示为?,导致后续程序无法识别正确的文件名。

从你提供的代码输出也能看出,文件名末尾带有\n:

<_io.TextIOWrapper name='/home/amitsh/PYTHON/AZURE/logs/UDID/4f552eb733e2a8aaa2f1950bef6efac7\n' mode='w' encoding='UTF-8'>

修复方案

在使用每行内容作为文件名前,去除末尾的换行符及多余空白字符,同时优化文件打开方式(确保文件资源正确释放):

修正后的代码

with open('/home/amitsh/PYTHON/AZURE/logs/ud_final_id.txt', 'r') as ciid:
    for udcid in ciid:
        # 去除每行末尾的换行符和空白字符
        clean_udcid = udcid.strip()
        # 用with语句打开文件,自动处理关闭操作
        with open(f"/home/amitsh/PYTHON/AZURE/logs/UDID/{clean_udcid}", "w") as f:
            # 此处可添加API数据写入逻辑,例如 f.write(api_response_data)
            pass

关键说明

  • udcid.strip():移除字符串首尾所有空白字符(包括换行符\n、制表符\t、空格等),若仅需移除换行符,也可使用udcid.rstrip('\n')。
  • 使用with语句打开文件:替代直接open()的方式,能确保文件操作完成后自动关闭,避免资源泄漏。

验证效果

执行修正后的代码后,再用ls -lrt查看UDID目录,文件名末尾的?会消失,显示为正常的ID字符串,后续程序即可正确识别并写入数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 07:22:50