我需要从我的Python脚本执行该脚本。
可能吗?该脚本会生成一些输出,并写入一些文件。如何访问这些文件?我尝试了子流程调用功能,但没有成功。
fx@fx-ubuntu:~/Documents/projects/foo$ bin/bar -c somefile.xml -d text.txt -r aString -f anotherString >output
应用程序“ bar”还引用了一些库,除了输出外,它还创建了文件“ bar.xml”。我如何访问这些文件?只是通过使用open()?
谢谢,
编辑:
Python运行时的错误仅是这一行。
$ python foo.py bin/bar: bin/bar: cannot execute binary file
要执行外部程序,请执行以下操作:
import subprocess args = ("bin/bar", "-c", "somefile.xml", "-d", "text.txt", "-r", "aString", "-f", "anotherString") #Or just: #args = "bin/bar -c somefile.xml -d text.txt -r aString -f anotherString".split() popen = subprocess.Popen(args, stdout=subprocess.PIPE) popen.wait() output = popen.stdout.read() print output
是的,假设您的bin/bar程序将其他一些分类文件写入磁盘,则可以使用正常打开它们open("path/to/output/file.txt")。请注意,如果不需要,您不需要依赖子外壳将输出重定向到磁盘上名为“输出”的文件。我在这里展示如何直接将输出读取到您的python程序中而无需在其间插入磁盘。
bin/bar
open("path/to/output/file.txt")