0

我正在尝试通过 Python 脚本在终端中运行命令。该命令仅接受三个参数,在终端中执行时可以完美运行。这是在命令行中输入的内容:

gpmetis inputfile numberOfSections

无论inputfile来自哪里,比如桌面,在执行outputfile后都会被转储到相同的位置gpmetis(它被命名为inputfile.part.numberOfSections)。gpmetis仅适用于终端,但出于压缩目的,我想在 Python 脚本中间使用它以节省时间。(我以前只是在终端和 Python 之间来回移动文件)

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

我目前正在调用终端,例如:

def Terminal(inputfile, NumParts): 
    os.system("gpmetis inputfile NumParts")

    outputfile = "inputfile.part." + NumParts
    return outputfile

而且我没有从中得到错误,但我也没有收到任何输出文件。我在这里错过了什么,如果你知道你能解释一下吗?我正在尝试学习 Python,因此非常感谢描述我正在搞砸的事情。

os已导入。我在脚本中“返回”的方式可能有问题outputfile,但我的桌面上也没有看到outputfile,这是要处理的第一个问题(一次一步!)

注意:我找到了相关的文档,但它会对我有帮助吗?我很难理解它..

4

2 回答 2

4

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

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

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

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

最后,根据这个答案,看起来您最好使用该subprocess模块。然后,您可以像这样执行相同的命令:

import subprocess
subprocess.call(['gpmetis', inputfile, str(NumParts)])
于 2012-07-11T23:43:00.127 回答
0

inputfile是一个传递给函数的变量,但在命令行参数中,它被当作文件名。

你可能想试试

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

没有调用代码和意图很难说。让我知道它是否有帮助。

于 2012-07-11T23:34:24.367 回答