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

Python文件追加内容换行异常求助:forecast变量无法逐行写入

解决Python文件追加写入不换行问题

原始文件文本:

forecast= Mostly cloudy and cooler. Precipitation ending with in 6 hours. Windy with possible wind shift to the W NW or N.

运行代码时,已按句号将文本分割为forecast1至forecast5五个变量,print输出确认分割正常,但追加写入realtimegauges.txt时出现内容未换行的问题,导致forecast2、forecast3等内容连在一起,示例如下:

forecast1=Mostly cloudy and cooler. Precipitation ending with in 6 hours. Windy with possible wind shift to the W NW or N.
forecast2=Mostly coudy and coolerfoecast3=precipitationending in 6 hours.

用户提供的代码:

# safely open the text file we created and search for a string
with open("/home/admin/Documents/realtimegauges.txt",'r') as file:
    lines = file.readlines()
    for line in lines:
        if "forecast=" in line:
            str = (line)
            
            

forecast1= (str.rsplit('=',1)[1])
forecast2= (forecast1.rsplit('.',5)[0])
try:forecast3= (forecast1.rsplit('.',5)[1])
except  IndexError:
        forecast3 = ('')
try:forecast4= (forecast1.rsplit('.',5)[2])
except  IndexError:
        forecast4 = ('')
try:forecast5= (forecast1.rsplit('.',5)[3])
except  IndexError:
        forecast5 = ('')
print (forecast1)
with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
    f.write('forecast1=' + forecast1)
print (forecast2)
with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
    f.write('forecast2=' + forecast2)
print (forecast3)
with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
    f.write('forecast3=' + forecast3)
    f.close()
print (forecast4)
print (forecast5)

#with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
 #   f.write('forecast1=' + forecast1)
  #  f.close()
#with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
 #   f.write('forecast2=' + forecast2)
  #  f.close()
#with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
 #   f.write('forecast3=' + forecast3)
  #  f.close()
#with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
 #   f.write('forecast4=' + forecast4)
#with open("/home/admin/Documents/realtimegauges.txt",'a') as f:    
 #   f.write('forecast5=' + forecast5)

解决方法

问题核心是写入文件时未添加换行符,导致内容连续拼接。同时可优化文件操作逻辑,减少重复打开关闭文件的开销。

修改后的代码

# 读取文件并提取目标行
with open("/home/admin/Documents/realtimegauges.txt",'r') as file:
    target_line = ""
    for line in file.readlines():
        if "forecast=" in line:
            target_line = line
            break  # 找到目标行后终止循环,提升效率

# 分割forecast内容并处理
forecast_content = target_line.rsplit('=', 1)[1].strip()  # 去除首尾空白字符
segments = forecast_content.split('.')
# 过滤空片段并去除每个片段的首尾空白
valid_segments = [s.strip() for s in segments if s.strip()]

# 准备要写入的行
write_lines = []
write_lines.append(f"forecast1={forecast_content}\n")
# 生成forecast2到forecast5的内容
for idx in range(len(valid_segments)):
    forecast_num = idx + 2
    if forecast_num > 5:
        break
    write_lines.append(f"forecast{forecast_num}={valid_segments[idx]}.\n")  # 补回句号

# 一次性完成所有追加写入
with open("/home/admin/Documents/realtimegauges.txt",'a') as f:
    f.writelines(write_lines)

# 打印验证结果
print("forecast1:", forecast_content)
for idx, seg in enumerate(valid_segments, start=2):
    if idx > 5:
        break
    print(f"forecast{idx}:", seg + '.')

关键修改点

  1. 添加换行符:在每一行写入内容末尾添加\n,强制实现换行
  2. 优化文件操作:仅打开一次文件完成所有追加写入,减少IO操作次数
  3. 内容处理优化:用split('.')更直观分割句子,过滤空片段并补回句号,保证内容完整性
  4. 代码简洁性:使用f-string格式化字符串,提升代码可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:35:40