【问题标题】:How to write string to file line by line python如何逐行将字符串写入文件python
【发布时间】:2021-11-06 12:40:26
【问题描述】:

我写了以下代码,当我打印输出时它是正确的

  7.21: (1,2)->(5,8) 
  5.39: (5,8)->(10,10) 
 24.08: (10,10)->(34,12) 

但是当我尝试写入文件时,我无法弄清楚如何获得相同的结果。 我想像打印功能一样使用填充逐行打印

但是我从文件中得到了这个,都在一行中 7.21: (1,2)->(5,8) 5.39: (5,8)->(10,10) 24.08: (10,10)->(34,12)


from math import sqrt

f = open('output.txt', 'w')
cord_list=[]
for i in range(len(my_coord)):
  for j in range(len(my_coord[i])):

    cord_list.append(my_coord[i][j])

a=0
b=1
c=0
d=1
for x in range (0,3):
  my_res=((cord_list[a]-cord_list[a+2])**2)+((cord_list[b]-cord_list[b+2])**2)
  a=a+2
  b=b+2
  my_res=sqrt(my_res)
  my_res=round(my_res, 2)
  

  print (f'{my_res: >10}: ({cord_list[c]},{cord_list[d]})->({cord_list[c+2]},{cord_list[c+3]}) ')
  string=(f'{my_res: >10}: ({cord_list[c]},{cord_list[d]})->({cord_list[c+2]},{cord_list[c+3]})')
  f.writelines(string) 
  c=c+2
  d=d+2

f.close()

【问题讨论】:

  • 向“打印”添加关键字参数“file=f”以写入“f”而不是标准输出。

标签: python writetofile


【解决方案1】:

在末尾添加换行符\n

from math import sqrt

f = open('output.txt', 'w')
cord_list=[]
for i in range(len(my_coord)):
  for j in range(len(my_coord[i])):

    cord_list.append(my_coord[i][j])

a=0
b=1
c=0
d=1
for x in range (0,3):
  my_res=((cord_list[a]-cord_list[a+2])**2)+((cord_list[b]-cord_list[b+2])**2)
  a=a+2
  b=b+2
  my_res=sqrt(my_res)
  my_res=round(my_res, 2)
  

  print (f"{my_res: >10}: ({cord_list[c]},{cord_list[d]})->({cord_list[c+2]},{cord_list[c+3]}) \n")
  string=(f"{my_res: >10}: ({cord_list[c]},{cord_list[d]})->({cord_list[c+2]},{cord_list[c+3]})\n")
  f.writelines(string) 
  c=c+2
  d=d+2

f.close()

【讨论】:

  • 请注意,\r\n 是特定于 Windows 的,由于历史原因,Windows 在换行符之前添加了回车符。在其他操作系统(也适用于 Windows)中,最好使用 \n
  • @TobiasBrösamle 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-23
相关资源
最近更新 更多