我正在努力使用python的子进程.这是我的任务:
到目前为止我的尝试:
1.我被困在这里使用Popen.我明白,如果我使用
subprocess.call("put command here")这个作品.我想尝试使用类似的东西:
import subprocess
def run_command(command):
p = subprocess.Popen(command, shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
Run Code Online (Sandbox Code Playgroud)
我在哪里使用,run_command("insert command here")但这没有任何作用.
关于2.我认为答案应该类似于这里: 从Python运行shell命令并捕获输出,但由于我无法工作,我还没有尝试过.
我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包,而不是 Sublime Text 目录的 Python 包。
\n\nSublime Text使用自己的Python环境,而不是机器的Python环境。开发人员需要sys.path设置非内置的 Sublime Text Python 包。
是否有任何方法在 Sublime Text 插件中使用全局安装的 Python 包?例如,如果有人告诉我,如何更改我的插件 \xe2\x80\x94 ,那就太好了,请参阅此问题的 3.2 项。
\n\n例如,我将Python代码 \xe2\x80\x94 替换\xd0\x9f\xd0\xbe\xd0\xb8\xd1\x81\xd0\xba \xd0\x9a\xd1\x80\xd0\xb8\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x82\xd1\x8b为[**\xd0\x9f\xd0\xbe\xd0\xb8\xd1\x81\xd0\xba \xd0\x9a\xd1\x80\xd0\xb8\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x82\xd1\x8b**](https://github.com/Kristinita/Kristinita.github.io),其中https://github.com/Kristinita/Kristinita.github.io\xe2\x80\x94 …
python python-3.x sublimetext sublimetext3 sublime-text-plugin
我尝试使用subprocess.run 此答案中描述的,但它不会返回stdout或stderr的任何内容:
>>> result = subprocess.run('echo foo', shell=True, check=True)
>>> print(result.stdout);
None
>>> print(result.stderr);
None
Run Code Online (Sandbox Code Playgroud)
我也试过使用capture_output=True但是我得到了一个例外__init__() got an unexpected keyword argument 'capture_output',即使它在文档中有描述.
有没有办法将 waitress-serve 输出记录到文件中?
我当前使用的命令是:
waitress-serve --listen=localhost:8080 --threads=1 my_app_api:app
Run Code Online (Sandbox Code Playgroud)
我们使用的应用程序在编写时并没有考虑到女服务员,因此我们选择使用命令行来提供服务以避免更改(至少现在是这样)。
我如何(在GNU/Linux系统上)找到与模块一起使用的所有可用语言环境locale?
我发现在模块中唯一关闭的是locale_alias具有区域设置别名的字典.有时会将其视为查看您所拥有的语言环境的位置,但它不包含所有别名.在我的系统上这个程序
#! /usr/bin/python3
import locale
for k, v in sorted(locale.locale_alias.items()):
if k.startswith('fr_') or v.startswith('fr_'):
print('{:20}{}'.format(k, v))
Run Code Online (Sandbox Code Playgroud)
版画
c-french fr_CA.ISO8859-1
fr fr_FR.ISO8859-1
fr_be fr_BE.ISO8859-1
fr_ca fr_CA.ISO8859-1
fr_ch fr_CH.ISO8859-1
fr_fr fr_FR.ISO8859-1
fr_lu fr_LU.ISO8859-1
français fr_FR.ISO8859-1
fre_fr fr_FR.ISO8859-1
french fr_FR.ISO8859-1
french.iso88591 fr_CH.ISO8859-1
french_france fr_FR.ISO8859-1
Run Code Online (Sandbox Code Playgroud)
忽略所有utf-8语言环境,例如'fr_FR.utf8',它们确实可以用作参数locale.setlocale.从壳,locale -a | grep "^fr_.*utf8"给出
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR.utf8
fr_LU.utf8
Run Code Online (Sandbox Code Playgroud)
显示了很多选项.(当然,一种方法是从Python运行这个shell命令,但我认为有一种方法可以直接从Python中执行此操作.)
Jenkins 中的一项工作调用我的 python 脚本,我想在其中调用make以编译我的 UT 代码,并sys.exit(1)在出现诸如“make: *** [ ] Error 1”之类的编译错误时引发。
我还需要实时打印输出。
这是我的python脚本:
make_process = subprocess.Popen("make clean all;", shell=True, stdout=subprocess.PIPE, stderr=sys.stdout.fileno())
while True:
line = make_process.stdout.readline()
if not line:break
print line, #output to console in time
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)
但是如何捕获make错误并让这个 python 脚本失败?
笔记:
更新: 原来是一个makefile问题。请参阅对已接受答案的评论。但是对于这个python问题,pentadedecagon给出了正确的答案。
我正在编写一个python脚本,用于检查特定IP /端口的活动连接数.为此,我使用os.system('my_command')来获取输出.os.system返回我传递的命令的退出状态(0表示返回的命令没有错误).如何将os.system抛出的值存储到变量中的STDOUT?这样这个变量以后可以在函数中用于计数器.像subprocess,os.popen这样的东西可以提供帮助.有人可以建议吗?
可能重复:
从python运行shell命令并捕获输出
当我想捕获shell执行输出时,我这样做.
declare TAGNAME=`git describe --tags`
Run Code Online (Sandbox Code Playgroud)
简单.我在Python中寻找这个,但大多数看起来非常复杂.最简单的方法是什么?是的,我知道我可以创建一个函数,但我想知道预定义的函数是否存在.
tagname = theFunc('git describe --tags')
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 python 动态创建 bash 别名(例如,登录到一组服务器的别名)。我希望能够做这样的事情:
from subprocess import call
SERVERS = [
("example", "user@example.com"),
#more servers in list
]
for server in SERVERS:
call('alias %s="ssh %s"' % (server[0], server[1]), shell=True)
Run Code Online (Sandbox Code Playgroud)
问题是子进程在单独的 shell 会话中启动作业,所以程序运行良好,但对我运行它的 shell 会话没有任何影响。
pythonos.system或尝试打印命令并将它们通过管道传送到 bash时也会出现同样的问题(所有这些都会创建别名,但在程序完成后立即销毁的新 shell 中)。
最终,这个目标是从 .bashrc 运行这个脚本
如何做到这一点?
我写了一个小代码:
import os
os.system('users')
os.system('w')
Run Code Online (Sandbox Code Playgroud)
这打印
ubuntu
09:27:25 up 9 days, 21:23, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ubuntu pts/0 42.99.164.66 09:06 5.00s 0.10s 0.00s sh -c w
Run Code Online (Sandbox Code Playgroud)
但是当我尝试:
import os
from pyslack import SlackClient
user_name = os.system('users')
login_details = os.system('w')
print user_name
print login_details
Run Code Online (Sandbox Code Playgroud)
它有以下输出:
ubuntu
09:28:32 up 9 days, 21:24, 1 user, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
ubuntu pts/0 42.99.164.66 09:06 …Run Code Online (Sandbox Code Playgroud) python ×10
python-3.x ×3
subprocess ×2
alias ×1
bash ×1
capture ×1
dynamic ×1
locale ×1
logging ×1
makefile ×1
os.system ×1
python-3.6 ×1
shell ×1
sublimetext ×1
sublimetext3 ×1
waitress ×1
wsgi ×1