【问题标题】:Passing a modified file content to a command that need the file path将修改后的文件内容传递给需要文件路径的命令
【发布时间】:2014-08-29 02:31:13
【问题描述】:

假设我有一个命令,该命令将文件路径作为输入并编译该文件。 我想使用 subprocesspython 脚本调用此命令。

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

问题是:

有没有办法(例如子进程中的方法)编译文件内容而无需手动写入然后在文件系统中删除?

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    您可以在语法中给出编译/运行命令。

    此外,提供带有完整路径的可执行文件/文件名。

    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)
    • 不只是在subprocess.Popen args中以字符串格式写你的文件名。例如subprocess.Popen(['python','/home/myuser/directory/myfile.py'],。 ..以上参数..) 将运行您的 python 脚本 myfile.py 并使用 stdout/stderr 捕获输出/错误
    • 由任何东西生成的文件在生成后总会有一个存储/索引的位置。要获取文件位置,在 unix 中有一个命令“查找”。任何 unix 命令都可以通过 python 调用 os.system()
    • 对不起,我表达得很糟糕......我的意思是我得到了文件内容,然后我用 python 脚本修改了文件内容,现在我想使用这个内容而不把它写在文件并调用命令的文件路径。
    • @vigte 在这种情况下,您可以使用 os.touch() 在某个位置创建一个临时文件,然后您可以根据需要运行该文件并使用 os.remove() 将其删除。此外,如果您真的不想写入某个文件,那么您将不得不在一些更狭窄的细节中澄清您的情况
    猜你喜欢
    • 2017-08-24
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多