在函数内部使用os.system()

时间:2017-04-19 17:08:52

标签: python

我有一个nonpython程序,我使用os.system命令运行python,但是我把这个命令放在一个函数中。我想用os.system运行的程序应该给我一个输出文件,我需要输出进行处理,我还需要将输出实际写入我发送给它的目录中。

我写的函数是以下一般格式

def myFunction(infile):
    os.system('myProgram '+infile+' '+outfileName)
    outfile = numpy.loadtxt(outfileName)
    return outfile

但是,myProgram(outfileName)的输出没有写入我的目录,因此numpy无法加载它。有没有办法存储我使用os.system运行的程序的全局输出?当它在函数内部时?

1 个答案:

答案 0 :(得分:2)

假设myProgram工作正常,可能会发生这种情况,因为myProgram不知道python路径,所以文件只是写在其他地方。尝试使用完整路径,看看是否有效。

假设infileoutfileName是当前工作目录中的相对路径,您可以这样做:

def myFunction(infile):
    cmd  = 'myProgram ' + os.path.join(os.getcwd(), infile)
    cmd += ' ' + os.path.join(os.getcwd(), outfileName))
    os.system(cmd)
    outfile = numpy.loadtxt(outfileName)
    return outfile