python-3.x - 如何在python3中使用子进程编写命令

标签 python-3.x postgresql

import subprocess
proc = subprocess.Popen(['systemctl', 'reload', 'postgresql-9.6.service'], stdout=subprocess.PIPE, shell=True)
(db_cmd, err) = proc.communicate()

print (db_cmd)

我正在尝试使用 python 3 运行 systemctl reload postgresql-9.6.service 但我无法获得输出。我得到的输出如下:

重新加载:systemctl:找不到命令 b''

最佳答案

首先:阅读文档:Subprocess module Python 3 . 您输错了 import 语句:它应该是:“import subprocess”。

使用sudo来执行你写的程序:sudo python/full/path/to/your/script

然后:如果您编写 db_cmd = proc.communicate()[0] 会更符合 pythonic,因为这样您只创建您使用的变量。

最后,您的错误表明您在处理 systemctl 命令时出了点问题。特别是它似乎缺少重新加载命令。尝试使用重启。

另外:这个问题与How to use subprocess重复.

关于python-3.x - 如何在python3中使用子进程编写命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51623316/

相关文章:

python - python 中区分字符串

PostgreSQL 无法识别 STRAIGHT_JOIN

python - 列表元素的相似性

python-3.x - python 请求使用验证码登录

python - 有没有办法在 Python 控制台上记录自动生成的消息?

database - Postgresql - 如何禁止在某些字符串字段中使用空格

postgresql - 无法将 Padrino 连接到带有 activerecord 的 PostgreSQL 数据库

postgresql - 我可以在 Heroku 上的 5 MB PostgreSQL 中存储多少条记录?

sql - 如何在第二个已安装的硬盘驱动器上获取 PostgreSQL 表空间?

python - 如何让它看起来像电脑在打字?