我有一个 python 脚本,需要将一些值输出到标准输入并将另一个字符串复制到剪贴板。我正在使用该模块通过以下subprocess
方式执行该xclip
实用程序Popen
:
# clip.py
import subprocess
from subprocess import Popen
print('PRINT_ME')
p1 = Popen(['xclip', '-selection', 'clipboard'], stdin=subprocess.PIPE)
p1.communicate(input=('PASTE_ME'.encode()))
该脚本按预期工作:PRINT_ME
在 bash 中回显,PASTE_ME
可以粘贴,并立即返回。
将脚本输出通过管道传输到另一个命令时会出现问题。假设一个人想使用以下命令重定向到一个文件和标准输入tee
:
$ python clip.py|tee file.txt
该程序按预期工作但不返回,即shell 不给予控制权。
这怎么可能解决?
一些重要信息:该xclip
实用程序自行分叉(以应对 X 上剪贴板的实现)维护可复制的字符串,当在 shell 中使用时它立即返回(它分叉到后台)。似乎外壳将stdin/stdout都附加clip.py
到.
如果使用并杀死命令返回。 xclip
tee
xclip -selection clipboard
ps u
我正在使用 Python 3.4。
谢谢