我的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.call
或subprocess.check_call
是否有任何不同?可能是在我的脚本中我使用原始字符串文字,当我从QListWidget
得到它时,它是不是相同?
我意识到这是不可能重现的,因为你没有外部可执行文件,但我只是想知道是否还有其他问题。感谢