为什么我的python程序输出中有额外的空行?

rob*_*ntw 2 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()
Run Code Online (Sandbox Code Playgroud)

当我查看文件的输出时,我得到以下内容:

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
Run Code Online (Sandbox Code Playgroud)

哪个是正确的数字,每行之间只有空行.我试过并试图删除它们,但我似乎无法.我究竟做错了什么?

知更鸟

Joh*_*hin 16

对于GENERAL解决方案,从INPUT中删除尾随换行符:

splitted_line = line.rstrip("\n").split(";")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,从输出中删除无关的换行符"有效"但它是一个kludge.

另外:(1)在循环中间打开输出文件不是一个好主意; 做一次,否则你只是在浪费资源.使用足够长的循环,您将耗尽文件句柄并崩溃(2)硬连接这样的文件名并不是一个好主意,特别是隐藏在脚本中间; 尝试使您的脚本可重用.

  • 因为换行不属于那些他想要给出一个有意义的名字(Zenith)的数据.这只是巧合,它是"其余的".下一集:输出不是文本文件,它被插入到数据库列中,有人回到这里询问他们从查询中获取的CSV文件中间行的换行符. (4认同)

And*_*are 8

改变这个:

output_file.write("0\t" + str(DN) + "\t" + Zenith + "\n")
Run Code Online (Sandbox Code Playgroud)

对此:

output_file.write("0\t" + str(DN) + "\t" + Zenith)
Run Code Online (Sandbox Code Playgroud)

当您读入该Zenith字符串时,该字符串已包含\n原始文件的尾部.