Python 为多个文件保存EMACS的输出

Python 为多个文件保存EMACS的输出,python,emacs,Python,Emacs,我使用一个EMACS包(vax)来计算不同区域的一些平铺。目前,我有大量的文本文件,我在EMACS中打开每个文件,执行单个命令,3,手动将输出记录到minibuffer中,并最终将这些输出相加。这是非常耗时的,而且我经常出错 我真的很想自动化这个过程,有谁能给我一些建议,告诉我如何编写某种脚本来打开指定目录中的每个文件,在输入命令3后记录minibuffer的输出,并在目录中对连续输出求和 我不熟悉LISP或EMACS,我已经阅读了后者的教程。我对如何使用Python编写代码有着粗略的工作知识,

我使用一个EMACS包(vax)来计算不同区域的一些平铺。目前,我有大量的文本文件,我在EMACS中打开每个文件,执行单个命令,
3
,手动将输出记录到minibuffer中,并最终将这些输出相加。这是非常耗时的,而且我经常出错

我真的很想自动化这个过程,有谁能给我一些建议,告诉我如何编写某种脚本来打开指定目录中的每个文件,在输入命令
3
后记录minibuffer的输出,并在目录中对连续输出求和


我不熟悉LISP或EMACS,我已经阅读了后者的教程。我对如何使用Python编写代码有着粗略的工作知识,如果有一种方法可以在Python脚本中执行这一切,那将非常有用。

关于如何批量运行emacs的分步说明:

  • 首先,您需要获取要操作的文件列表。
    find name dired
    应该足以满足大多数需求。打开
    dired
    在项目的基本目录和M-x
    中查找名称dired
    。 接受基本目录的默认值,输入例如
    *.py
    作为通配符

  • 现在,您有了一个包含所有感兴趣的文件名的缓冲区。 用t选择它们。您可以使用 m和德尔

  • 使用!启动shell命令!。使用此命令模板作为开始:

     emacs --batch ? --eval "(message \"%s %s\" (buffer-name) (buffer-size))"
    
  • 现在,您将所有输出整齐地放在shell输出缓冲区中

  • 上面的代码以字符为单位显示每个文件的缓冲区大小。 您应该用您的代码替换
    (缓冲区大小)
    ,即

    (如果(相等vax区域(缓冲子串无属性(点最小值)(点最大值)))为零(vax退出)(setq vax区域(缓冲子串无属性(点最小值)(点最大值)))(捕捉(引用彩色)(捕捉(引用单数)(vax编号)))

    整个事情应该在一条线上。 或者,您可以使用bash脚本包装对
    emacs--batch
    的调用 并从
    dired
    调用它

    UPD:尝试运行此代码 将
    (缓冲区大小)
    改为
    (progn(vax模式)(交互式调用(vax col vax number))

    UPD:加载vax.el
    使用
    emacs——批处理-l~/path/to/vax.el--eval“(程序(vax模式)(消息\%s%s\”(缓冲区名称)(交互调用(vax col vax编号))”

    分步说明如何批量运行emacs:

  • 首先,您需要获取要操作的文件列表。
    find name dired
    应该足以满足大多数需求。打开
    dired
    在项目的基本目录和M-x
    中查找名称dired
    。 接受基本目录的默认值,输入例如
    *.py
    作为通配符

  • 现在,您有了一个包含所有感兴趣的文件名的缓冲区。 用t选择它们。您可以使用 m和德尔

  • 使用!启动shell命令!。使用此命令模板作为开始:

     emacs --batch ? --eval "(message \"%s %s\" (buffer-name) (buffer-size))"
    
  • 现在,您将所有输出整齐地放在shell输出缓冲区中

  • 上面的代码以字符为单位显示每个文件的缓冲区大小。 您应该用您的代码替换
    (缓冲区大小)
    ,即

    (如果(相等vax区域(缓冲子串无属性(点最小值)(点最大值)))为零(vax退出)(setq vax区域(缓冲子串无属性(点最小值)(点最大值)))(捕捉(引用彩色)(捕捉(引用单数)(vax编号)))

    整个事情应该在一条线上。 或者,您可以使用bash脚本包装对
    emacs--batch
    的调用 并从
    dired
    调用它

    UPD:尝试运行此代码 将
    (缓冲区大小)
    改为
    (progn(vax模式)(交互式调用(vax col vax number))

    UPD:加载vax.el
    使用
    emacs——批处理-l~/path/to/vax.el--eval“(程序(vax模式)(消息\%s%s\”(缓冲区名称)(交互调用(vax col vax编号))”

    分步说明如何批量运行emacs:

  • 首先,您需要获取要操作的文件列表。
    find name dired
    应该足以满足大多数需求。打开
    dired
    在项目的基本目录和M-x
    中查找名称dired
    。 接受基本目录的默认值,输入例如
    *.py
    作为通配符

  • 现在,您有了一个包含所有感兴趣的文件名的缓冲区。 用t选择它们。您可以使用 m和德尔

  • 使用!启动shell命令!。使用此命令模板作为开始:

     emacs --batch ? --eval "(message \"%s %s\" (buffer-name) (buffer-size))"
    
  • 现在,您将所有输出整齐地放在shell输出缓冲区中

  • 上面的代码以字符为单位显示每个文件的缓冲区大小。 您应该用您的代码替换
    (缓冲区大小)
    ,即

    (如果(相等vax区域(缓冲子串无属性(点最小值)(点最大值)))为零(vax退出)(setq vax区域(缓冲子串无属性(点最小值)(点最大值)))(捕捉(引用彩色)(捕捉(引用单数)(vax编号)))

    整个事情应该在一条线上。 或者,您可以使用bash脚本包装对
    emacs--batch
    的调用 并从
    dired
    调用它

    UPD:尝试运行此代码 将
    (缓冲区大小)
    改为
    (progn(vax模式)(交互式调用(vax col vax number))

    UPD:加载vax.el
    使用
    emacs——批处理-l~/path/to/vax.el--eval“(程序(vax模式)(消息\%s%s\”(缓冲区名称)(交互调用(vax col vax编号))”

    分步说明如何批量运行emacs:

  • 首先,您需要获取要操作的文件列表。 <代码