Python 3.6.3写入文件时f-string末尾\n未生效问题求助
解决文件写入时换行符无效的问题
嘿,我来帮你搞定这个换行的小麻烦!你遇到的\n不生效的问题,通常和平台兼容性、文件缓冲或者循环逻辑有关,下面给你几个靠谱的解决方案:
1. 适配平台的换行符(最常见原因)
Windows系统默认的换行符是\r\n,而不是单纯的\n——如果你用Windows自带的记事本打开文件,可能看不到换行,但用VS Code、Notepad++这类编辑器是正常的。试试把写入语句改成:
f.write(f'[{train_time[i]}] № {train_number[i]} {train_direct[i]}\r\n')
2. 用print()函数自动处理换行
print()函数会自动根据当前系统添加对应的换行符,比手动写\n更省心。把写入部分改成这样:
with open('output.txt', 'w', encoding='utf-8') as f: for i in range(len(train_time)): line_content = f'[{train_time[i]}] № {train_number[i]} {train_direct[i]}' print(line_content, file=f)
3. 检查三个列表的长度是否一致
如果train_time、train_number、train_direct这三个列表的长度不一样,循环只会执行到最短的那个列表的长度,导致你以为没换行(其实是行数不够)。先加一行代码验证:
print(f"列表长度:时间{len(train_time)},车次{len(train_number)},方向{len(train_direct)}")
如果长度不一致,说明你的正则表达式匹配有问题,需要调整正则规则,确保每个字段都能正确匹配到对应的内容。
4. 手动刷新缓冲区(偶尔需要)
虽然with语句会自动关闭文件并写入缓冲区内容,但如果写入的内容太少,可能暂时存在缓冲区里没落地。可以在每次write后手动刷新:
f.write(f'[{train_time[i]}] № {train_number[i]} {train_direct[i]}\n') f.flush()
先试试前两个方案,大概率能解决你的问题~
内容的提问来源于stack exchange,提问作者Pavel Silber
相关产品推荐
相关产品推荐

