python程序如何判断它是否在emacs中运行?

Joh*_*den 4 python emacs

我经常在emacs中编写python.

我经常想重新评估我的文件,我可以使用Ctrl-C Ctrl-C,这会导致解释器重新加载整个文件然后我可以继续播放.

所以,如果我正在编写一个需要输入的程序,我通常会发现自己有两行:

lines = open("/home/jla/inputfile").readlines()
#lines = fileinput.input()
Run Code Online (Sandbox Code Playgroud)

第一行是"开发时要做什么"(从已知的示例输入文件中读取),第二行是"从命令行运行时要做什么"(从stdin读取,或提供的文件名)

显然这很糟糕,所以我在想:

if in_emacs():
     lines = open("/home/jla/inputfile").readlines()
if run_from_shell():
     lines = fileinput.input()
else:
     oops()
Run Code Online (Sandbox Code Playgroud)

我知道怎么写oops()的,但我有点坚持了in_emacs()run_from_shell(),我想知道,如果你睿智的人们能有所帮助.

ale*_*xis 10

由emacs打开的shell应该具有环境变量EMACS=t.至少这适用于我的emacs,YMMV.

如果这不适合你,这里是如何找出python可以看到的依赖于emacs的环境变量.从shell运行并在emacs下运行,并比较输出.

import os
for e in os.environ:
    if 'EMACS' in e:
        print e, os.environ[e]
Run Code Online (Sandbox Code Playgroud)