为什么我的Python程序输出中有多余的空行?
我对Python不是特别熟悉,所以下面可能做了一些傻事。我有一个这样的程序:
import os
import re
import linecache
LINENUMBER = 2
angles_file = open("d:/UserData/Robin Wilson/AlteredData/ncaveo/16-June/scan1_high/000/angles.txt")
lines = angles_file.readlines()
for line in lines:
splitted_line = line.split(";")
DN = float(linecache.getline(splitted_line[0], LINENUMBER))
Zenith = splitted_line[2]
output_file = open("d:/UserData/Robin Wilson/AlteredData/ncaveo/16-June/scan1_high/000/DNandZenith.txt", "a")
output_file.write("0\t" + str(DN) + "\t" + Zenith + "\n")
#print >> output_file, str(DN) + "\t" + Zenith
#print DN, Zenith
output_file.close()
当我查看输出到文件的内容时,得到的是:
0 105.5 0.0
0 104.125 18.0
0 104.0 36.0
0 104.625 54.0
0 104.25 72.0
0 104.0 90.0
0 104.75 108.0
0 104.125 126.0
0 104.875 144.0
0 104.375 162.0
0 104.125 180.0
这些数字是对的,只是每行之间有空白行。我尝试了很多方法去除这些空白行,但就是不行。我到底哪里做错了呢?
罗宾
5 个回答
2
另一种解决方案(如果你是从文件中处理行的话,这个方法很方便)就是去掉空白字符:
Zenith = Zenith.strip();
8
把这个:
output_file.write("0\t" + str(DN) + "\t" + Zenith + "\n")
改成这个:
output_file.write("0\t" + str(DN) + "\t" + Zenith)
当你读取原始文件时,Zenith
字符串已经包含了结尾的 \n
。
16
对于一个通用的解决方案,记得把输入中的多余换行符去掉:
splitted_line = line.rstrip("\n").split(";")
虽然在这个情况下,去掉输出中的多余换行符“有效”,但这其实是一种临时的解决办法。
另外: (1) 在循环中间打开输出文件并不是个好主意;最好只打开一次文件,不然会浪费资源。如果循环很长,你可能会用完文件句柄,导致程序崩溃。 (2) 不要把文件名写死在代码里,尤其是藏在脚本中间;尽量让你的脚本可以重复使用。