我想要复制当你做一些像'git commit‘这样的事情时发生的功能。它打开你的编辑器,你输入一些东西,然后保存/退出,将该文件交还给启动编辑器的脚本。
如何在Python中实现此功能?
编辑:
谢谢你的建议,这里有一个基于答案的工作示例:
import os, subprocess, tempfile
(fd, path) = tempfile.mkstemp()
fp = os.fdopen(fd, 'w')
fp.write('default')
fp.close()
editor = os.getenv('EDITOR', 'vi')
print(editor, path)
subprocess.call('%s %s' % (editor, path), shell=True)
with open(path, 'r') as f:
print(f.read())
os.unlink(path)发布于 2012-04-13 02:11:42
通常的情况是:
临时文件
所以就像这样:
import os, subprocess, tempfile
f, fname = tempfile.mkstemp()
f.write('default')
f.close()
cmd = os.environ.get('EDITOR', 'vi') + ' ' + fname
subprocess.call(cmd, shell=True)
with open(fname, 'r') as f:
#read file
os.unlink(fname)发布于 2012-04-13 02:12:20
将要修改的文本数据保存到临时文件中,打开编辑器(vi)作为指向该文件的外部进程,使用os.system或subprocess.Popen (如果需要对其进行更多控制),然后重新读取临时文件。
我建议您默认打开vi,但请注意"VISUAL“环境变量的内容。
import os
name = os.tmpnam()
editor = "vi" if not ["VISUAL"] in os.environ else os.environ["VISUAL"]
os.system("%s %s" % (editor, name))
data = open(name).read()
os.unlink(name)发布于 2012-04-13 02:07:52
os.system("\bin\vi %s"%filename)
ftxt = open(filename,"r").read()https://stackoverflow.com/questions/10129214
复制相似问题