在上自动运行python代码

2024-05-18 09:39:42 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以自动监视python脚本文件,并在每次保存时在tmux/screen中执行它?我主要在vim中工作,每次我想评估代码时,它都会在新窗口中打开,因此它会破坏工作流。我问这个问题是因为我也在Scala工作,sbt构建工具有很好的选择来实现这一点(在保存时运行compiler/REPL)


Tags: 文件工具方法代码脚本compilervimrepl
2条回答

如果每次我保存py文件,它就会自动执行,这会很烦人。因为您可以编辑py文件,所以只需要py类。或者纯配置的东西。不管怎样,如果你想实现这一点,你可以尝试:

autocmd FileWritePost *.py exec '!python' shellescape(@%, 1)

我的vimrc里有:

^{pr2}$

现在您只需手动<F9>来测试当前的python文件。在

按照肖恩和肯特的建议,最简单的方法是让vim来驾驶它。在

但是,如果您只“大部分”在vim中工作,那么这可能不合适。在

唯一的另一种选择是编写使用平台的文件系统监视api的代码,或者,如果最坏的情况出现,定期轮询文件,并在每次更新时运行它。然后在您的screentmux(可能是在另一个screen窗口中使用vim)运行该代码。在

因为我不了解您的平台,所以我将编写一个愚蠢的轮询实现来展示这一想法只要记住,在现实生活中,使用inotifywatch/fswatch/等工具会更好:

import os
import subprocess
import sys
import time

scripts = sys.argv[1:]
mtimes = {script: os.stat(script).st_mtime for script in scripts}
while True:
    for script in scripts:
        mtime = os.stat(script).st_mtime
        if mtime != mtimes[script]:
            subprocess.call([script], shell=True)
            mtimes[script] = mtime
    time.sleep(250)

现在,您可以这样做:

^{pr2}$

相关问题 更多 >