在新终端中从python启动vim并等待其关闭

rlcwz9us  于 2022-11-11  发布在  Python
关注(0)|答案(1)|浏览(120)

我正在尝试创建一个python脚本,
1.启动一个新的终端窗口(在我的情况下是终结符)
1.在临时文件或指定文件上打开vim
1.等待直到Vim/终结器关闭
1.将文件的内容分配给变量
以下是我目前所掌握的情况:

import  os, subprocess

def print_tmp(i):
    with open(str(os.path.dirname(os.path.abspath(__file__))+'/tmp.tex'), 'r') as g:
        return print('flag ' + str(i) + ': ' + str(g.read()))

tmpfile=str(os.path.dirname(os.path.abspath(__file__))+'/tmp.tex')
f = open(tmpfile,'w+')
f.write('$$')
f.close()

vimcmd = str("/usr/bin/terminator -g  ~/.config/terminator/config -p nord --geometry 60x5+0-0 -T popup-bottom-center -e \'vim " + str(tmpfile) +"\'")

print_tmp(1)
subprocess.Popen(vimcmd,shell=True).wait()
print_tmp(2)
contents=""

with open(tmpfile, 'r') as g:
    contents = g.read().strip()
print('contents = '+str(contents))

这将打开我想要的文件上的vim。然而,在调用我的vimcmd之后,脚本并没有像我需要的那样等待。变量contents保持为'$$'并完成脚本。我如何让python等待终止符窗口关闭?顺便说一下,我已经尝试了subprocess.run()subprocess.call(),但都不起作用。提前感谢!

6tdlim6h

6tdlim6h1#


# !/usr/bin/python3

import os
from pathlib import Path

file = Path('/tmp/myfile.txt')

os.system( 'terminator --command="vim {}"'.format( str(file.absolute()) ) ) 

myvar = None

with file.open('r') as f:
    myvar = f.readlines()

print(myvar)

相关问题