我有一个 C++ 文件#include
我有一个 C++ 文件
#include <cstdio>
int main(int iArgC, char *apArgV[]) {
int iResult = -1;
if (iArgC > 1) {
FILE *fOut = fopen(apArgV[1], "wt");
if (fOut != NULL) {
fprintf(fOut, "hello\n");
fprintf(fOut, "goodbye\n");
fclose(fOut);
printf("Written `%s`\n", apArgV[1]);
iResult = 0;
} else {
printf("Coudn´t open %s\n", apArgV[1]);
}
} else {
printf("I need an argument\n");
}
return 0;
}
我是这样编译的
g++ -g -o hello hello.cpp
当我运行时, ./hello /home/jody/hihi,txt
文件 hihi.txt
就被写入了。
然后我有这个python脚本
#!/usr/bin/python
import subprocess as sp
import time
def callHello(file_name) :
command = ["/home/jody/progs/polyhedronLED/version_c/hello", file_name]
proc = sp.Popen(command,
stdout=sp.PIPE,
stderr=sp.PIPE)
sOut, sError = proc.communicate()
iResult = proc.returncode
print("return code: %d"%iResult)
print("Output: %s"%sOut)
# -- end def
if __name__ == '__main__':
file_name0 = "/home/jody/hihi.txt"
callHello(file_name0)
ff = open(file_name0, "wt")
lines = ff.readlines()
ff.close()
print("output\n%s"%lines)
# -- end if
当我运行该脚本时,我得到输出:
return code: 0
Output: b'Written `/home/jody/hihi.txt`\n'
Traceback (most recent call last):
File "/home/jody/progs/polyhedronLED/version_c/./hellocall.py", line 22, in <module>
lines = ff.readlines()
^^^^^^^^^^^^^^
io.UnsupportedOperation: not readable
但当我随后检查输出目录时,该文件 hihi.txt
已被写入。
调用后 time.sleep(5)
延迟 callHello()
,但结果是一样的。
然后我编写了一个 bash 脚本,调用 hello
并随后读取文件的内容:这按预期工作。
何时(或如何)才能在 python 中实际访问子进程写入的文件?