Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将修改后的文件内容传递给需要文件路径的命令_Python_Subprocess - Fatal编程技术网

Python 将修改后的文件内容传递给需要文件路径的命令

Python 将修改后的文件内容传递给需要文件路径的命令,python,subprocess,Python,Subprocess,假设我有一个命令,它将文件的路径作为输入并编译该文件。 我想使用子进程从python脚本调用此命令 使用python,我提取并修改了我想要编译的文件内容。 我不需要存储要编译的新文件内容 问题是: 是否有一种方法(例如子流程中的方法)可以编译文件内容,而无需在文件系统中手动写入然后删除?您可以使用以下语法给出编译/运行命令 此外,为可执行文件/文件名提供完整路径 P = subprocess.Popen(['your_run_command','filename_with_path', 'any

假设我有一个命令,它将文件的路径作为输入并编译该文件。 我想使用子进程从python脚本调用此命令

使用python,我提取并修改了我想要编译的文件内容。 我不需要存储要编译的新文件内容

问题是:


是否有一种方法(例如子流程中的方法)可以编译文件内容,而无需在文件系统中手动写入然后删除?

您可以使用以下语法给出编译/运行命令

此外,为可执行文件/文件名提供完整路径

P = subprocess.Popen(['your_run_command','filename_with_path', 'any_extra_parameter_you_want_to_add'], STDIN=subprocess.PIPE,STDOUT=subprocess.PIPE,stderr=subprocess.PIPE)
output,err = P.communicate()
P.wait()

#For removing the already existing file
if os.path.exists('filename_with_path'):
    os.remove('filename_with_path')

谢谢…所以在这种情况下,您需要在文件系统中显式写入。如果
f
是我的文件
f.write(filename)
No只需在subprocess.Popen参数中以字符串格式写入文件名。例如subprocess.Popen(['python','/home/myuser/directory/myfile.py',…以上参数..)将运行python脚本myfile.py,并使用stdout/stderrA捕获输出/错误。任何生成的文件在生成后都会有一个存储/索引的位置。要获取文件位置,在unix中有一个命令“find”。任何unix命令都可以使用os.system()通过python调用。对不起,我表达了我的错误…我的目的是得到文件内容,然后用python脚本修改文件内容,现在我希望使用此内容而不将其写入文件并调用命令的文件路径。@vigte在这种情况下,您可以使用os.touch()在某个位置创建临时文件,然后您可以根据需要运行该文件,并使用os.remove()将其删除。此外,如果您真的不想写入某个文件,那么您必须在更狭窄的细节中澄清您的情况