我正在使用子进程Popen从python运行一个命令。命令有一个参数来指示它将使用的文件的路径。只能通过该参数指定该文件。你知道吗
命令类似于:
command -file /path/to/file
我不能这样做:
cat /path/to/file | command -file
问题是我在数据库中有这个文件,我从python应用程序中读取它。我希望避免将文件临时保存到磁盘并在命令中指定它。你知道吗
有没有办法将内存中的文件作为参数管道传输到Popen?你知道吗
谢谢!你知道吗
编辑: 好的,我应该指定命令和代码,但我当时没有。 我正在尝试使用openssl对证书执行ocsp请求。我知道有一个用于python的openssl模块,但是我想避免额外的python模块。你知道吗
这是python代码:
openssl = '/path/to/openssl'
ossl = subprocess.Popen([openssl, 'ocsp', '-no_cert_verify', '-issuer', 'cacert.cer', '-serial', '0x1234', '-url', url], stdout=PIPE, stderr=PIPE)
我有cacert.cer公司存储在数据库中。无论如何,我还没有看到将管道参数传递给-issuer,我希望有任何方法可以使用子流程管道你知道吗
如果是unix,可以使用命名管道。它的工作方式类似于管道,但使用文件系统上的路径。你知道吗
https://docs.python.org/2/library/os.html#os.mkfifo
os.mkfifo()
创建fifo不要忘记对打开的fifo文件执行
.close()
,否则以Popen()
开始的进程将永远不知道文件的结尾在哪里。你知道吗如您所说,如果命令需要一个路径指向文件系统中的一个文件,以便对某些数据进行操作,那么只有一种方法可以为它提供这样的数据:在文件系统中有一个文件。如果该文件还不存在,因为数据在数据库中,而不是在单个文件中,那么通过各种逻辑手段,您必须在调用该命令之前创建该文件。但是请注意,有一些技巧,特别是在兼容POSIX的系统上,可以高效地创建这样的文件。skyjur提到了其中一个技巧。你知道吗
相关问题 更多 >
编程相关推荐