Python不打印换行符

Iva*_*van 0 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()
Run Code Online (Sandbox Code Playgroud)

这只是打印"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()
Run Code Online (Sandbox Code Playgroud)

编辑:我认为问题在于我的脚本本身.我需要将EOF发送到hdparm以使其做任何应该做的事情.

Fat*_*ror 5

xargs手册页:

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

(重点补充).

另外,要添加 - 您看到的换行符就是echo它自己. xargs无论如何都不会传递它.