相关疑难解决方法(0)

在Python中调用外部命令

如何在Python脚本中调用外部命令(就像我在Unix shell或Windows命令提示符下键入它一样)?

python shell terminal command subprocess

4553
推荐指数
57
解决办法
325万
查看次数

运行shell命令并捕获输出

我想编写一个函数来执行shell命令并将其输出作为字符串返回,无论是错误还是成功消息.我只想获得与命令行相同的结果.

什么是代码示例会做这样的事情?

例如:

def run_command(cmd):
    # ??????

print run_command('mysqladmin create test -uroot -pmysqladmin12')
# Should output something like:
# mysqladmin: CREATE DATABASE failed; error: 'Can't create database 'test'; database exists'
Run Code Online (Sandbox Code Playgroud)

python shell subprocess

816
推荐指数
15
解决办法
96万
查看次数

从另一个python脚本运行python脚本,传入args

我想从另一个Python脚本运行Python脚本.我想传递变量,就像我使用命令行一样.

例如,我会跑我的,将通过值(0,1,2,3)的列表迭代第一个脚本,并通过那些到第二脚本script2.py 0,然后 script2.py 1,等

我找到了SO 1186789这是一个类似的问题但ars的答案调用了一个函数,因为我想运行整个脚本而不仅仅是一个函数,而balpha的答案调用脚本但没有args.我将其改为以下类似的测试:

execfile("script2.py 1")
Run Code Online (Sandbox Code Playgroud)

但它没有正确接受变量.当我打印出sys.argvscript2.py时,它是对第一个脚本"['C:\ script1.py']的原始命令调用.

我真的不想改变原始脚本(即我的例子中的script2.py),因为我不拥有它.

我认为必须有办法做到这一点,我很困惑你是怎么做到的.

python

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

将subprocess.Popen调用的输出存储在字符串中

我正在尝试用Python进行系统调用,并将输出存储到我可以在Python程序中操作的字符串中.

#!/usr/bin/python
import subprocess
p2 = subprocess.Popen("ntpq -p")
Run Code Online (Sandbox Code Playgroud)

我尝试了一些事情,包括一些建议:

检索subprocess.call()的输出

但没有任何运气.

python subprocess

278
推荐指数
10
解决办法
40万
查看次数

从另一个脚本调用脚本的最佳方法是什么?

我有一个名为test1.py的脚本,它不在模块中.它只有在脚本本身运行时才能执行的代码.没有函数,类,方法等.我有另一个作为服务运行的脚本.我想从作为服务运行的脚本中调用test1.py.

例如:

文件test1.py

print "I am a test"
print "see! I do nothing productive."
Run Code Online (Sandbox Code Playgroud)

文件service.py

# Lots of stuff here
test1.py # do whatever is in test1.py
Run Code Online (Sandbox Code Playgroud)

我知道一种方法是打开文件,读取内容,并基本上评估它.我假设有一个更好的方法来做到这一点.或者至少我希望如此.

python

277
推荐指数
9
解决办法
42万
查看次数

在Python中运行Bash命令

在我的本地机器上,我运行一个包含这一行的python脚本

bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)
Run Code Online (Sandbox Code Playgroud)

这很好用.

然后我在服务器上运行相同的代码,我收到以下错误消息

'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/bin/cwm", line 48, in <module>
from swap import  diag
ImportError: No module named swap
Run Code Online (Sandbox Code Playgroud)

所以我所做的就是插入一个"print bashCommand",它在使用os.system()运行它之前打印我,而不是终端中的命令.

当然,我再次得到错误(由os.system(bashCommand)引起)但在该错误之前它在终端中打印命令.然后我只是复制了那个输出并在终端上做了一个复制粘贴,然后点击回车就可以了......

有没有人知道发生了什么?

python bash

260
推荐指数
8
解决办法
47万
查看次数

如何在管道中使用`subprocess`命令

我想subprocess.check_output()ps -A | grep 'process_name'.我尝试了各种解决方案,但到目前为止没有任 有人可以指导我怎么做吗?

python linux subprocess pipe

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

在进程运行时不断打印Subprocess输出

要从我的Python脚本启动程序,我使用以下方法:

def execute(command):
    process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    output = process.communicate()[0]
    exitCode = process.returncode

    if (exitCode == 0):
        return output
    else:
        raise ProcessException(command, exitCode, output)
Run Code Online (Sandbox Code Playgroud)

因此,当我启动一个类似的过程时Process.execute("mvn clean install"),我的程序会一直等到过程结束,然后我才能获得程序的完整输出.如果我正在运行需要一段时间才能完成的过程,这很烦人.

我可以让我的程序逐行写入进程输出,通过在循环结束之前轮询进程输出或其他内容吗?

**[编辑]抱歉,在发布此问题之前我没有很好地搜索.线程实际上是关键.在这里找到一个示例,说明如何执行此操作:** 来自线程的Python Subprocess.Popen

python subprocess

175
推荐指数
9
解决办法
16万
查看次数

何时在shell变量周围包装引号?

有人能告诉我是否应该在shell脚本中包含变量的引号?

例如,以下是正确的:

xdg-open $URL 
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)

要么

xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

unix linux bash shell quotes

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

使用Python在默认应用程序中打开文档

我需要能够使用Windows和Mac OS中的默认应用程序打开文档.基本上,我想做同样的事情,当你在资源管理器或Finder中双击文档图标时发生的事情.在Python中执行此操作的最佳方法是什么?

python windows macos

115
推荐指数
9
解决办法
8万
查看次数

标签 统计

python ×9

subprocess ×5

shell ×3

bash ×2

linux ×2

command ×1

macos ×1

pipe ×1

quotes ×1

terminal ×1

unix ×1

windows ×1