如何为 python 文件设置自动标头

Posted

技术标签:

【中文标题】如何为 python 文件设置自动标头【英文标题】:How to have automated headers for python files 【发布时间】:2011-09-06 06:37:28 【问题描述】:

在 python 中正确的标头格式描述为 here 。

使用 VIM 或 shell 脚本,我想将常用的元数据(如 __author__, __authors__, __contact__, __copyright__, __license__, __deprecated__, __date__ and __version__)添加到文件头。 SVN 关键字也不错。将其添加到新文件是最相关的。将其添加到现有文件中是一种奖励。

Ruslan's Blog 有针对 Emacs 的解决方案。但是我找不到 Python 的解决方案。

在没有 Emacs 的情况下,python 在哪里完成了这项工作? VIM 可以将文本从一个文件复制到另一个 like so ,但也许有更好的方法。

【问题讨论】:

文件创建和编辑日期、作者身份和版本信息都由源代码控制维护。我不了解在文件本身中添加此信息的冗余(可能不准确或过时)副本的用例。将您的版权/许可信息放入您的 LICENSE 文件中,并将其置于源代码之外。它在那里毫无用处。项目版本信息应该在项目的某个地方存在一次,而不是在每个文件的标题中。联系信息在您的自述文件中。简而言之,这些标签都不属于源代码的顶部。 【参考方案1】:

我强烈推荐snipMate 插件。您可以轻松地为每种文件类型添加新的片段,只需键入关键字并点击标签即可触发它们,例如,您可以点击

header<TAB>

所有字段都将被添加,您可以轻松地在需要按文件填写的任何字段中进行选项卡。甚至在内置的 python sn-ps (vimfiles/sn-ps/python.sn-ps) 中已经有一个名为 docs 的 sn-p,看起来它为文档字符串填写了类似的元数据,您可以根据自己的目的轻松修改这些元数据,这里以snip格式为例:

# Module Docstring
snippet docs
    '''
    File: $1:`Filename('$1.py', 'foo.py')`
    Author: $2:`g:snips_author`
    Description: $3
    '''

在您的片段中使用反引号支持动态条目(文件名和 g:snips_author 作为上述可选项卡条目 1 和 2 的默认值)。日期可以添加:

`system("date +%Y-%m-%d")`

(来自 snipMate 帮助文档)。

【讨论】:

snipMate 的有趣用途。我真的需要学习 grok snipMate。【参考方案2】:

这是我的 C++ 文件模板:

/*****************************************************************************
 * @file <file_name>
 *
 * @date <date>
 * @author John Doe
 * @email jdoe@yourcompany.com
 *
 * @brief
 *
 * @detail
 *
 *****************************************************************************/

这就是我在~/.vimrc里面的东西:

" Reads the template file replacing the tags by the actual
" information and insert the result at the beginning of the buffer. At
" the end, creates two blank lines at the end of the file and
" position the cursor at the first one.
function! s:insert_description()
    let template = $HOME . "/.vim/template/cpp.template"
    let file_name = expand("%:t") " Get file name without path
    let date = strftime("%Y") " Get the current year in format YYYY
    let i = 0
    for line in readfile(template)
        let line = substitute(line, "<file_name>", file_name, "ge")
        let line = substitute(line, "<date>", date, "ge")
        call append(i, line)
        let i += 1
    endfor
    execute "normal! Go\<Esc>k"
endfunction
autocmd BufNewFile *.c++,cpp,cc,c,h,hpp call <SID>insert_description()

基本上,我读取模板文件替换标签并使用实际信息,并将结果插入新创建文件的开头。每当 vim 创建一个新文件时,都会调用函数 s:insert_description()。这是由最后一行的autocmd 设置的。

您可以基于此代码并为 python 创建等效的代码。

【讨论】:

【参考方案3】:

只需转到http://www.vim.org 并在那里搜索“新文件模板”,您就会获得大量解决此类问题的插件,因此请查看并选择一个。

【讨论】:

以上是关于如何为 python 文件设置自动标头的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Spring Boot 应用程序设置自定义 Http 标头“服务器”

PostAsJsonAsync C# - 如何为 POST 请求正确设置标头 - BAD REQUEST 400

如何为 HttpClient 请求设置 Content-Type 标头?

如何为路由组中的所有请求设置标头

如何为inux系统删除文件自动重启服务

如何为gettext .po文件制作标题?