首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Subprocess不执行命令

Subprocess不执行命令
EN

Stack Overflow用户
提问于 2016-12-13 10:10:57
回答 2查看 4.5K关注 0票数 1

我在一个文件中有一组linux命令,我试图在python脚本中逐一执行它们。

代码语言:javascript
复制
for line in file:
    p = subprocess.Popen(line,shell=True,stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)

上面的行不执行任何命令,因为我看不到任何输出。如果只显式地提供命令,那么它就会被执行。

代码语言:javascript
复制
 cmd = "date"
p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-13 12:40:04

您可以使用os.systemsubprocess.call

完整代码:

代码语言:javascript
复制
import os
with open("/path/to/file") as file:
    command = file.readlines()
    for line in command:
         p = str(os.system(str(line)))

语法是

代码语言:javascript
复制
import os
os.system("path/to/executable option parameter")

os.system("executable option paramter")

例如,

代码语言:javascript
复制
os.system("ls -al /home")

或代码的一部分(使用subprocess):

代码语言:javascript
复制
for line in file:
    subprocess.call(line, shell=True)

我在https://docs.python.org/2/library/subprocess.html得到了这个信息

注意:os.system是不推荐的,但仍然有效。

票数 1
EN

Stack Overflow用户

发布于 2022-01-24 22:04:46

删除shell=True之后,当我执行以下命令时,我的命令也面临相同的问题:

代码语言:javascript
复制
subprocess.Popen(
  ["python3", os.path.join(script_dir, script_name)] + list(args),
  stdout=subprocess.PIPE, 
  stderr=subprocess.STDOUT, 
  cwd=script_dir, 
  shell=True
)

但一旦我取下外壳,它就正常工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41118451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档