Python不打印换行符

时间:2013-03-15 04:26:57

标签: python

我的脚本似乎在我最近的升级后停止了工作。为了找到问题,我写了一个小脚本:

import subprocess

hdparm = subprocess.Popen(["xargs","echo"],
                stdin=subprocess.PIPE)

hdparm.stdin.write("Hello\n")
hdparm.stdin.write("\n")
hdparm.stdin.close()
hdparm.wait()
quit()

这只是打印“Hello”和一个新行,但我希望有两个新行。是什么导致了这个? (我现在正在使用2.7.3)

编辑:这是有问题的脚本(为清晰起见而编辑):

hdparm = subprocess.Popen(["hdparm", "--please-destroy-my-drive", "--trim-sector-ranges-stdin", "/dev/sda"],
               stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
hdparm_counter = 0
for rng in ranges_to_trim:
    hdparm.stdin.write("%d:%d\n" % (rng["begin"],rng["length"]))
    hdparm_counter += 1
    if hdparm_counter > 63:
         hdparm.stdin.write("\n")
         hdparm_counter = 0
if hdparm_counter != 0:
    hdparm.stdin.write("\n")
hdparm.stdin.close()
hdparm.wait()
编辑:我认为问题在于我的脚本本身。我需要将EOF发送到hdparm以使其做任何应该做的事情。

1 个答案:

答案 0 :(得分:5)

来自xargs手册页:

  

本手册页记录了xargs的GNU版本。 xargs从标准输入读取项目,由。分隔   空格(可以用双引号或单引号或反斜杠保护)或换行符,并执行   命令(默认为/ bin / echo)一次或多次使用任何初始参数,后跟从stan-读取的项   dard输入。 标准输入上的空行将被忽略。

(重点补充)。

此外,要添加 - 您看到的换行符来自echo本身。无论如何xargs都没有传递它。