擅长:python、mysql、java
<p>这里的问题与<code>fileinput</code>或{<cd2>}无关。在</p>
<p>从文件中读取的行总是以换行结尾。在</p>
<p><code>print</code>添加新行,即使您正在打印的内容已经以换行结尾。在</p>
<p>您甚至可以在不涉及文件的情况下看到:</p>
<pre><code>>>> a = 'abc'
>>> print a
abc
>>> a = 'abc\n'
>>> print a
abc
>>>
</code></pre>
<p>解决方案如下:</p>
<ul>
<li><code>rstrip</code>输入的换行符:<code>print line.rstrip('\n')</code>(或者在处理过程的早期执行剥离)</li>
<li>使用“魔术逗号”来防止<code>print</code>添加换行符:<code>print line,</code></li>
<li>使用python3样式<code>print</code>和<code>from __future__ import print_function</code>,这样就可以使用更灵活的关键字参数:<code>print(line, end='')</code></li>
<li>使用<code>sys.stdout.write</code>代替<code>print</code>。在</li>
<li>完全重新组织你的代码,这样你就不再写stdout了,而是直接写入一个临时文件,或者把整个文件读入内存,然后再写出来,等等</li>
</ul>