在Python脚本中运行终端

时间:2012-07-11 23:25:58

标签: python terminal

我试图通过Python脚本在终端中运行命令。该命令只接受三个参数,在终端中执行时效果很好。以下是在命令行中输入的内容:

gpmetis inputfile numberOfSections

inputfile来自桌面,outputfilegpmetis执行后被转移到同一位置(名为inputfile.part.numberOfSections)。 gpmetis仅适用于终端,但出于缩减目的,我希望在Python脚本中间使用它以节省时间。 (我之前只是在终端和Python之间乱输文件)

但这是我遇到问题的地方......这个questionforum提供了有关如何在Python中执行终端的有用提示,但我仍然没有收到{{1}当我运行python代码时。这就像输出被抑制或我调用终端的方式有问题。

我正在呼叫终端,如:

outputfile

我没有收到错误,但我也没有收到任何输出文件。我在这里错过了什么,如果你知道你能解释一下吗?我正在努力学习Python,所以描述我搞砸的内容将非常感激。

def Terminal(inputfile, NumParts): os.system("gpmetis inputfile NumParts") outputfile = "inputfile.part." + NumParts return outputfile 已导入。我在脚本中“返回”os的方式可能有问题,但我的桌面上也没有看到outputfile,这是第一个要处理的问题(一步到位)一次!)

注意:我发现documentation是相关的,但它对我有帮助吗?我无法理解它..

2 个答案:

答案 0 :(得分:4)

首先,您可以检查os.system的返回值。非零返回值通常表示发生了错误。

看起来您正在尝试使用命令中的参数。在这种情况下,它应该看起来像:

def Terminal(inputfile, NumParts): 
    command = 'gpmetis ' + inputfile + ' ' + str(NumParts)
    os.system(command)

    outputfile = intputfile + '.part.' + str(NumParts)
    return outputfile

最后,根据this回答,您可能最好使用subprocess模块。然后,您可以执行相同的命令:

import subprocess
subprocess.call(['gpmetis', inputfile, str(NumParts)])

答案 1 :(得分:0)

此处inputfile是传递给函数的变量,但在命令行参数中,它被视为文件名。

您可能想尝试

os.system('gpmetis ' + str(inputfile) + ' ' + str(NumParts))
outputfile = intputfile + '.part.' + str(NumParts)

没有调用代码和意图很难说。如果有帮助,请告诉我。