相关疑难解决方法(0)

使用python和子进程Popen

我正在努力使用python的子进程.这是我的任务:

  1. 通过命令行启动api(这应该与在命令行上运行任何参数没有什么不同)
  2. 验证我的API已经出现.最简单的方法是轮询标准.
  3. 针对API运行命令.当我能够运行新命令时,会出现命令提示符
  4. 通过轮询标准输出来验证命令是否完成(API不支持日志记录)

到目前为止我的尝试:
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命令并捕获输出,但由于我无法工作,我还没有尝试过.

python subprocess

6
推荐指数
2
解决办法
2万
查看次数

Sublime Text 插件开发中的全局 Python 包

一、总结

\n\n

我不知道 Sublime Text 插件开发人员如何使用 Sublime Text 查找全局 Python 包,而不是 Sublime Text 目录的 Python 包。

\n\n

Sublime Text使用自己的Python环境,而不是机器的Python环境。开发人员需要sys.path设置非内置的 Sublime Text Python 包。

\n\n

是否有任何方法在 Sublime Text 插件中使用全局安装的 Python 包?例如,如果有人告诉我,如何更改我的插件 \xe2\x80\x94 ,那就太好了,请参阅此问题的 3.2 项。

\n\n
\n\n

2.使用Sublime Text 3环境的缺点

\n\n
    \n
  1. Sublime Text 3 Build 3126 使用 Python 3.3,但在撰写此问题时发布了 Python 3.6 稳定版。Python 3.6 有更多功能。
  2. \n
  3. 开发人员需要添加和更新第三方Python包,即使它们是为用户安装的。它花费了开发人员的时间。
  4. \n
  5. 对于开发者来说,可能会遇到包依赖的问题,参见本问题的6.2项。
  6. \n
\n\n
\n\n

3. 示例

\n\n

1.Python代码

\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

6
推荐指数
1
解决办法
2446
查看次数

subprocess.run()不返回stdout或stderr

我尝试使用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',即使它在文档中有描述.

python python-3.x python-3.6

6
推荐指数
1
解决办法
1532
查看次数

使用命令行 waitress-serve 进行日志记录

有没有办法将 waitress-serve 输出记录到文件中?

我当前使用的命令是:

waitress-serve --listen=localhost:8080 --threads=1 my_app_api:app
Run Code Online (Sandbox Code Playgroud)

我们使用的应用程序在编写时并没有考虑到女服务员,因此我们选择使用命令行来提供服务以避免更改(至少现在是这样)。

python logging wsgi python-3.x waitress

6
推荐指数
1
解决办法
8459
查看次数

如何在Python中找到所有可用的语言环境

我如何(在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中执行此操作.)

python locale

6
推荐指数
1
解决办法
363
查看次数

Python调用makefile编译并捕获make的输出

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 subprocess makefile

5
推荐指数
1
解决办法
1万
查看次数

如何将已打印的os.system的返回值存储到python中的stdout?

我正在编写一个python脚本,用于检查特定IP /端口的活动连接数.为此,我使用os.system('my_command')来获取输出.os.system返回我传递的命令的退出状态(0表示返回的命令没有错误).如何将os.system抛出的值存储到变量中的STDOUT?这样这个变量以后可以在函数中用于计数器.像subprocess,os.popen这样的东西可以提供帮助.有人可以建议吗?

python

4
推荐指数
2
解决办法
2万
查看次数

简单的python命令捕获shell执行输出?

可能重复:
从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 shell capture

3
推荐指数
1
解决办法
7183
查看次数

使用python动态创建bash别名

我正在尝试使用 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 运行这个脚本

如何做到这一点?

python bash alias dynamic

3
推荐指数
1
解决办法
1949
查看次数

如何将 os.system() 的输出存储在变量中

我写了一个小代码:

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 os.system

3
推荐指数
1
解决办法
2万
查看次数