Pythonの文字列から外れ、最終的な0を取り除きます
-
16-09-2019 - |
質問
#!/usr/bin/env python
import os, sys, subprocess, time
while True:
print subprocess.call("xsel", shell=True);
time.sleep(1);
、1秒ごとにクリップボードからエントリを取得し、それを印刷します。
結果:
copied0
entry0
from0
clipboard0
ので、0は文字列、整数になり、それが最終的に0を返す理由を私は知らないが、それは明らかに(intはストリップされていない)は、文字列のストリップを使用してから私を停止する?
1は、上記の結果にPythonの文字列から外れ、最終的な0を取り除くことができますどのように?
私は、Pythonへの変換BASHのスクリプターです。
解決
マークが指摘したように、subprocess.call()
はあなたがやりたいことはありません。
このような何かが動作するはずです。
#!/usr/bin/env python
import os, sys, subprocess, time
while True:
p=subprocess.Popen(["xsel"],stdout=subprocess.PIPE)
print p.stdout.read()
time.sleep(1)
他のヒント
編集:subprocess.call
が文字列を返すのではなく、int型 - 0
あなたは(XSELの実際の出力の後に)見ています。代わりに、使用します:
print subprocess.Popen('xsel', stdout=subprocess.PIPE).communicate()[0]
これは、私には見えます。あなたは、Pythonからクリップ結果を取得されていませんされます。
あなたはおそらくsubprocess.popenとstdoutをキャプチャしたい。
"copied0".rstrip("0")
が動作するはずです。
実際には、あなたがより良い、このように、それは文句を言わない画面に戻りコードを表示します。
import os, sys, subprocess, time
while True:
_ = subprocess.call("dir", shell=True);
time.sleep(1);
0
と新しい改行がゼロsubprocess.call
からシェルリターンコードであるPythonの印刷命令によって印刷唯一のものです。あなたが単語を参照してください理由は、それがstdoutに最初の結果のシェル自体最初の版画、ます。
編集:ひらめきのためにSマークの記事のコメントを参照してください。
。ちょうどst=st[:-1]
を行い、ゼロは文字列の末尾に常にあり、そしてあなたは、単にいつも最後の文字を削除したい場合。
それとも、あなたが最後にゼロがあるだろうことを確認していない場合、あなたはif st[-1]==0: st=st[:-1]
を行うことができます。