在Python脚本中运行终端

2024-10-01 11:39:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过Python脚本在终端中运行命令。该命令只接受三个参数,在终端中执行时可以完美地工作。以下是在命令行中输入的内容:

gpmetis inputfile numberOfSections

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

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

我现在给终端打电话:

^{pr2}$

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

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

注意:我发现documentation是相关的,但它能帮助我吗?我很难理解。。在


Tags: 文件命令行命令脚本终端内容参数方式
2条回答

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

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

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

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

最后,根据this答案,使用subprocess模块可能会更好。然后可以执行相同的命令,如下所示:

^{pr2}$

{1>将其作为变量传递给了函数},但在这里它被作为一个变量传递给了cd1>。在

你可以试试

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

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

相关问题 更多 >