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
相关产品推荐
相关产品推荐

