我想制作一个python脚本:
打开文件,执行命令i
,
然后写两行代码,点击escape
执行命令ZZ
我正在考虑os.system("vi program") then os.system("i")
和os.system(“code”),但这不起作用,因为你只能执行命令。谢谢!
答案 0 :(得分:4)
目前尚不清楚为什么要这样做。要真正运行一个交互式程序,你必须创建一个伪tty并从你的python脚本管理它 - 而不是为了胆小的人。
如果您只想将文本插入现有文件,可以使用文件命令直接从python中执行。或者您可以调用像sed
这样的程序,即“流编辑器”,用于以脚本方式进行文件编辑。 sed
命令支持大量ex
命令集(与vi
使用的基本命令集相同),因此i,c,s,g,a,所有工作。< / p>
答案 1 :(得分:1)
import pyautogui
from multiprocessing import Process
import os
vi_proc = Process(target = lambda: os.system("vi program"))
vi_proc.start()
pyautogui.typewrite("i")
pyautogui.typewrite("This code\n")
pyautogui.typewrite("really sucks!")
pyautogui.press("esc")
pyautogui.typewrite("ZZ")
vi_proc.join()
好吧,我真的不明白为什么,但我编写了一个有效的解决方案。我使用了PyAutoGUI,一个非常简单的库,允许您模拟按键和鼠标按下和移动。
您可能还需要安装一些sysyem软件包,例如libjpeg8-dev
。此外,您可能还需要在安装之前临时发出命令xhost +
。
那就是说,在bash
中它只是:
echo -e "This code\nreally sucks!" > program
答案 2 :(得分:0)
如果确实想要从命令行运行VIM,则可以使用VIM -c选项。像这样:
gvim -c "normal oFirst line" -c "normal oSecond line" -c "ZZ" foo.txt
(根据您想要插入线的位置,使用o,O,i或I进行调整)。
但是,必须有一种更简单的方法在文件中插入两行。