我试图通过Python脚本在终端中运行命令。该命令只接受三个参数,在终端中执行时效果很好。以下是在命令行中输入的内容:
gpmetis inputfile numberOfSections
inputfile
来自桌面,outputfile
在gpmetis
执行后被转移到同一位置(名为inputfile.part.numberOfSections
)。 gpmetis
仅适用于终端,但出于缩减目的,我希望在Python脚本中间使用它以节省时间。 (我之前只是在终端和Python之间乱输文件)
但这是我遇到问题的地方......这个question和forum提供了有关如何在Python中执行终端的有用提示,但我仍然没有收到{{1}当我运行python代码时。这就像输出被抑制或我调用终端的方式有问题。
我正在呼叫终端,如:
outputfile
我没有收到错误,但我也没有收到任何输出文件。我在这里错过了什么,如果你知道你能解释一下吗?我正在努力学习Python,所以描述我搞砸的内容将非常感激。
def Terminal(inputfile, NumParts):
os.system("gpmetis inputfile NumParts")
outputfile = "inputfile.part." + NumParts
return outputfile
已导入。我在脚本中“返回”os
的方式可能有问题,但我的桌面上也没有看到outputfile
,这是第一个要处理的问题(一步到位)一次!)
注意:我发现documentation是相关的,但它对我有帮助吗?我无法理解它..
答案 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)
没有调用代码和意图很难说。如果有帮助,请告诉我。