Python创建文本文件时文件名莫名添加??的问题排查与解决
解决文件名出现
??的问题 嘿,这个问题我之前也碰到过!那些??其实是不可见的换行符在搞鬼——你从USER_LIST里读取每一行的时候,core_id变量会自带行尾的换行符(比如\n,Windows系统下可能是\r\n),这些字符没法作为文件名的有效部分,系统就用??来显示它们了。
修复方法很简单,给ID做个"清洗"就行
只需要在使用core_id之前,用strip()方法把它两端的空白字符(包括换行符、空格)去掉,代码修改如下:
import subprocess with open('USER_LIST', "r") as file: for core_id in file: # 去掉换行符和多余空白,同时跳过空行 cleaned_id = core_id.strip() if not cleaned_id: continue filename = f"{cleaned_id}.txt" # 用f-string更直观 # 注意别和外层的file变量重名,改成output_file更清晰 with open(filename, "w") as output_file: subprocess.Popen(f"query where coreid={cleaned_id}", stdout=output_file, shell=True)
额外提几个小优化点
- 用Python 3.6+支持的f-string格式化字符串,比
%s写法更易读好维护。 - 加了空行判断,避免
USER_LIST里有空行时生成奇怪的空文件名。 - 内层文件变量改名为
output_file,避免和外层的file变量冲突,代码更清晰。
内容的提问来源于stack exchange,提问作者poobear
相关产品推荐
相关产品推荐

