在GUI中调用时,子进程调用表现异常

时间:2016-07-29 18:30:43

标签: python python-2.7 pyqt subprocess

我的GUI中有一个按钮(我使用PyQt4,我不知道是否相关)调用subprocess.call()来运行外部可执行文件。

外部可执行文件的一些背景知识:它是一个Fortran程序,它接受两个输入,一个输入文件和一个输出文件。输出文件是空文件,是写入结果的位置。这是我编写的一个简短的脚本来测试它:

import subprocess

path_to_executable = r"L:\internal\684.84\path\masscomp.exe"
input_path =  r"L:\internal\684.84\path\file1.ntxt"
output_path = r"L:\internal\684.84\path\file1.nout"

subprocess.call([path_to_executable, input_path, output_path])

当我测试它时,它完美地工作。这就是我将它合并到我的GUI中的方式。用户选择他们想要分析的文件,这些文件的路径存储在QListWidget中。然后我将这些路径放在一个列表中,然后循环遍历列表,通过可执行文件运行每个文件。这是代码:

def click_analyze(self):

        path_to_executable = r"L:\internal\684.07\path\masscomp.exe"
        for n in range(self.ui.inputList.count()):

            input_path = str(self.ui.inputList.item(n).text())
            output_path = input_path.replace('.ntxt', '.nout')

            # print input_path, '\n', output_path
            # L:\internal\684.84\path\file1.ntxt
            # L:\internal\684.84\path\file1.nout 
            # These are right

            subprocess.check_call([path_to_executable, input_path, output_path])

单击按钮时会运行此方法。但是,可执行文件返回错误。输入文件有问题。我通过我的脚本运行完全相同的文件,它运行得很好。

我的问题是: 在GUI中调用时,subprocess.callsubprocess.check_call是否有任何不同?可能是在我的脚本中我使用原始字符串文字,当我从QListWidget得到它时,它是不是相同?

我意识到这是不可能重现的,因为你没有外部可执行文件,但我只是想知道是否还有其他问题。感谢

0 个答案:

没有答案