<small id='5kNNb'></small><noframes id='5kNNb'>

    <i id='5kNNb'><tr id='5kNNb'><dt id='5kNNb'><q id='5kNNb'><span id='5kNNb'><b id='5kNNb'><form id='5kNNb'><ins id='5kNNb'></ins><ul id='5kNNb'></ul><sub id='5kNNb'></sub></form><legend id='5kNNb'></legend><bdo id='5kNNb'><pre id='5kNNb'><center id='5kNNb'></center></pre></bdo></b><th id='5kNNb'></th></span></q></dt></tr></i><div id='5kNNb'><tfoot id='5kNNb'></tfoot><dl id='5kNNb'><fieldset id='5kNNb'></fieldset></dl></div>
    • <bdo id='5kNNb'></bdo><ul id='5kNNb'></ul>

      1. <legend id='5kNNb'><style id='5kNNb'><dir id='5kNNb'><q id='5kNNb'></q></dir></style></legend>
      2. <tfoot id='5kNNb'></tfoot>
      3. Python字符串作为子进程的文件参数

        时间:2023-09-03

        <small id='jjB1j'></small><noframes id='jjB1j'>

            <tbody id='jjB1j'></tbody>
          • <legend id='jjB1j'><style id='jjB1j'><dir id='jjB1j'><q id='jjB1j'></q></dir></style></legend>

          • <tfoot id='jjB1j'></tfoot>

              <i id='jjB1j'><tr id='jjB1j'><dt id='jjB1j'><q id='jjB1j'><span id='jjB1j'><b id='jjB1j'><form id='jjB1j'><ins id='jjB1j'></ins><ul id='jjB1j'></ul><sub id='jjB1j'></sub></form><legend id='jjB1j'></legend><bdo id='jjB1j'><pre id='jjB1j'><center id='jjB1j'></center></pre></bdo></b><th id='jjB1j'></th></span></q></dt></tr></i><div id='jjB1j'><tfoot id='jjB1j'></tfoot><dl id='jjB1j'><fieldset id='jjB1j'></fieldset></dl></div>

                • <bdo id='jjB1j'></bdo><ul id='jjB1j'></ul>
                  本文介绍了Python字符串作为子进程的文件参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我正在尝试将文件传递给我作为 Python 子进程启动的程序 (MolPro).

                  I am trying to pass a file to a program (MolPro) that I start as subprocess with Python.

                  它最常用的是一个文件作为参数,就像在控制台中这样:

                  It most commonly takes a file as argument, like this in console:

                  path/molpro filename.ext
                  

                  其中 filename.ex 包含要执行的代码.或者一个 bash 脚本(我正在尝试做的,但是在 Python 中):

                  Where filename.ex contains the code to execute. Alternatively a bash script (what I'm trying to do but in Python):

                  #!/usr/bin/env bash
                  path/molpro << EOF
                      # MolPro code
                  EOF
                  

                  我正在尝试在 Python 中执行上述操作.我试过这个:

                  I'm trying to do the above in Python. I have tried this:

                  from subprocess import Popen, STDOUT, PIPE
                  DEVNULL = open('/dev/null', 'w')  # I'm using Python 2 so I can't use subprocess.DEVNULL
                  StdinCommand = '''
                      MolPro code
                  '''
                  
                  # Method 1 (stdout will be a file)
                  Popen(['path/molpro', StdinCommand], shell = False, stdout = None, stderr = STDOUT, stdin = DEVNULL)
                  # ERROR: more than 1 input file not allowed
                  
                  # Method 2
                  p = Popen(['path/molpro', StdinCommand], shell = False, stdout = None, stderr = STDOUT, stdin = PIPE)
                  p.communicate(input = StdinCommand)
                  # ERROR: more than 1 input file not allowed
                  

                  所以我很确定输入看起来不够像文件,但即使查看 Python - 如何将字符串传递给 subprocess.Popen(使用 stdin 参数)? 我找不到我在做什么错了.

                  So I am pretty sure the input doesn't look enough like a file, but even looking at Python - How do I pass a string into subprocess.Popen (using the stdin argument)? I can't find what Im doing wrong.

                  我不喜欢:

                  • 将字符串写入实际文件
                  • 将 shell 设置为 True
                  • (而且我无法更改 MolPro 代码)

                  非常感谢您的帮助!

                  更新:如果有人试图做同样的事情,如果你不想等待工作完成(因为它不会返回任何东西,无论哪种方式),使用 p.改为 stdin.write(StdinCommand).

                  推荐答案

                  如果您从 Popen() 参数中删除 StdinCommand,您的第二种方法似乎应该有效:

                  It seems like your second method should work if you remove StdinCommand from the Popen() arguments:

                  p = Popen(['/vol/thchem/x86_64-linux/bin/molpro'], shell = False, stdout = None, stderr = STDOUT, stdin = PIPE)
                  p.communicate(input = StdinCommand)
                  

                  这篇关于Python字符串作为子进程的文件参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:子进程Popen和通信后关闭所有文件的正确方法 下一篇:通过python子进程的ffmpeg无法找到相机

                  相关文章

                  <i id='wwsCw'><tr id='wwsCw'><dt id='wwsCw'><q id='wwsCw'><span id='wwsCw'><b id='wwsCw'><form id='wwsCw'><ins id='wwsCw'></ins><ul id='wwsCw'></ul><sub id='wwsCw'></sub></form><legend id='wwsCw'></legend><bdo id='wwsCw'><pre id='wwsCw'><center id='wwsCw'></center></pre></bdo></b><th id='wwsCw'></th></span></q></dt></tr></i><div id='wwsCw'><tfoot id='wwsCw'></tfoot><dl id='wwsCw'><fieldset id='wwsCw'></fieldset></dl></div>

                  <small id='wwsCw'></small><noframes id='wwsCw'>

                    <bdo id='wwsCw'></bdo><ul id='wwsCw'></ul>
                  1. <tfoot id='wwsCw'></tfoot>

                    <legend id='wwsCw'><style id='wwsCw'><dir id='wwsCw'><q id='wwsCw'></q></dir></style></legend>