2014-02-28 20 views
0

我有一个可执行文件,我需要通过一个python脚本来运行和可执行文件需要一个文件路径作为参数,就像这样:有没有办法使用字符串中的数据代替子进程中的文件路径参数?

./myExecutable /pathToFileToProcess 

我希望我能和POPEN运行合格可执行我表示我的“/ pathToFileToProcess”数据的字符串,而不必将其写入磁盘。

我相信我试图做的是非常相似,在这里问的问题: Python string as file argument to subprocess

但是建议的解决方案是不是为我工作。下面是我试图实现它:

from subprocess import Popen, STDOUT, PIPE 

stringDataFromFile = "the data to be processed" 

p = Popen(['./myExecutable'], shell = False, stdout = PIPE, stderr = PIPE, stdin = PIPE) 
stdout, stderr = p.communicate(input = stringDataFromFile) 
print(stdout) 
print(stderr) 

当我运行此我得到在标准输出为./myExecutable的一般用法消息是,如果你不提供文件来处理发生了什么。注意:我需要捕获标准输出,所以我已经实现它与建议略有不同。

我在想,差异必须是./myExecutable不会接受它通过stdin输入,其中链接示例中的程序会。或者,我只是做错了。

有关如何做到这一点的任何想法,或者甚至可能吗?

+0

'stdin = stdout'? –

回答

0

我怀疑你关于可执行文件不接受通过stdin输入的建议是正确的。您可以通过将示例输入文件的内容管道输入到您的可执行文件来测试此内容,例如:

cat path_to_file | my_executable 
+0

是的,如果我这样做,我会得到用法消息,就好像没有指定文件一样。糟糕,好像有没有办法做到这一点,而不写我的数据字符串到文件。 – Axl

相关问题