我需要一种从外部编辑器获取数据的方法。

def _get_content():
     from subprocess import call
     file = open(file, "w").write(some_name)
     call(editor + " " + file, shell=True)
     file.close()
     file = open(file)
     x = file.readlines()

     [snip]


我个人认为应该有一个更优雅的方法。您知道,我需要与外部编辑器进行交互并获取数据。

您知道更好的方法/有更好的主意吗?

编辑:

Marcelo带我想到了使用tempfile进行此操作的想法。

这是我的方法:

def _tempfile_write(input):
    from tempfile import NamedTemporaryFile

    x = NamedTemporaryFile()
    x.file.write(input)
    x.close()
    y = open(x)

    [snip]


这可以完成工作,但也不能令人满意。听说过产卵吗?

最佳答案

我建议使用列表,而不是字符串:

def _get_content(editor, initial=""):
    from subprocess import call
    from tempfile import NamedTemporaryFile

    # Create the initial temporary file.
    with NamedTemporaryFile(delete=False) as tf:
        tfName = tf.name
        tf.write(initial)

    # Fire up the editor.
    if call([editor, tfName]) != 0:
        return None # Editor died or was killed.

    # Get the modified content.
    with open(tfName).readlines() as result:
        os.remove(tfName)
        return result

关于python - 从外部程序获取数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2576956/

10-10 23:51