从字符串中删除空的最后一行(从管道输出)

时间:2014-02-20 18:45:11

标签: python string pipe

我想在输出后删除空行:

#!/usr/bin/python

os.system("find /home/pi/bsp/musik/musik/ -name ""*.mp3"" | shuf -n 1 > /home/pi/bsp/musik/musik/track")

我明白了:

>>>cat track
/home/pi/bsp/musik/musik/2/Little Green Bag - George Baker Selection - Reservoir Dogs.mp3

但是当我用Python打印文件时,这是一个不同的故事:

>>>sudo python play.py
/home/pi/bsp/musik/musik/2/Lilly Allen - Fuck You.mp3

>>>>

......最后加上一条线。

我喜欢将曲目传递给OMXPlayer,但最后还有额外的线路没有办法......所以我认为不可能很难摆脱它:

我尝试将a保存到新文件并删除空行:

os.system("sed '/^$/d' /home/pi/bsp/musik/track > /home/pi/bsp/musik/tt")
os.system("mv /home/pi/bsp/musik/tt /home/pi/bsp/musik/track ")

或者在管道中将其移除:

sed '/^$/d'

或者通过以下方式将其从刺痛中移除:

text = os.linesep.join([s for s in text.splitlines() if s])

或者:

track[:track.rfind('\n')]

到目前为止还没有任何工作。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

假设play.pyprint文件的内容,最后的额外行来自print语句。如果需要使用Python输出文件的内容,可以使用sys.stdout.write代替printrstrip('\n')字符串,或者在print语句的末尾加上逗号,或使用end=''的打印功能。如果您使用shell重定向或类似的方式将输入定向到OMXPlayer,它可能会正常工作而无需任何额外的努力。

import sys
sys.stdout.write(file_contents)

print file_contents.rstrip('\n')

print file_contents,

from __future__ import print_function

print(file_contents, end='')

答案 1 :(得分:0)

text = track.rstrip()
  

“返回删除了尾随字符的字符串副本。如果   省略字符或无,删除空白字符。“

相关问题