Удалите final 0 из строки python
-
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, но это, по-видимому, мешает мне использовать string strip (int не имеет strip), следовательно, 0 делает строку целым числом?
Как можно удалить final 0 из строки python в приведенном выше результате?
Я создаю скрипты для BASH, конвертируя их на python.
Решение
Как указал Марк, 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
возвращает не строку, а целое число - это 0
вы видите (после фактического вывода xsel).Используйте, вместо:
print subprocess.Popen('xsel', stdout=subprocess.PIPE).communicate()[0]
Мне кажется, что он запускает "xsel", который выводит свои результаты в стандартный вывод, а затем выводит код возврата (0) в стандартный вывод.Вы не получаете результаты клипа из python.
Вы, вероятно, хотите subprocess.popen и захватить стандартный вывод.
"copied0".rstrip("0")
должно сработать
На самом деле, вам лучше поступить так, это не приведет к отображению кода возврата на экране
import os, sys, subprocess, time
while True:
_ = subprocess.call("dir", shell=True);
time.sleep(1);
В 0
и новый перевод строки в каждой строке - это единственное, что печатается командой python print, где ноль - это код возврата оболочки из subprocess.call
.Сама оболочка сначала выводит свои результаты в стандартный вывод, вот почему вы видите это слово.
Редактировать:Смотрите комментарии к посту Марка о прозрении.
Если ноль всегда находится в конце строки, и поэтому вы просто всегда хотите удалить последний символ, просто сделайте st=st[:-1]
.
Или, если вы не уверены, что в конце будет ноль, вы можете сделать if st[-1]==0: st=st[:-1]
.