利用pygments.lexersget_lexer_for_filename()函数快速判断文件类型并进行代码高亮显示
发布时间:2023-12-25 09:30:45
pygments.lexers.get_lexer_for_filename()函数是Pygments库中的一个函数,用于通过文件名快速确定文件类型,并返回对应的代码高亮显示的语言解析器。
该函数的使用方式如下:
pygments.lexers.get_lexer_for_filename(filename, **options)
其中,filename是要判断的文件名,可以是完整的文件名,也可以仅包含文件的后缀名。options是可选参数,用于传递额外的选项给语言解析器。
返回值是一个Pygments库的lexer对象,可以通过该对象进行代码高亮显示。
下面是一个具体的使用例子:
import pygments.lexers
def highlight_code(filename, code):
lexer = pygments.lexers.get_lexer_for_filename(filename)
formatter = pygments.formatters.TerminalFormatter()
highlighted_code = pygments.highlight(code, lexer, formatter)
print(highlighted_code)
# 示例代码
filename = 'example.py'
code = '''
def greet(name):
print("Hello, " + name + "!")
greet("World")
'''
highlight_code(filename, code)
在上述例子中,我们定义了一个highlight_code()函数,通过调用pygments.lexers.get_lexer_for_filename()函数获取代码的语言解析器,并使用TerminalFormatter作为语法高亮的格式化器。
然后,我们传递一个示例代码和文件名到highlight_code()函数中,函数会自动判断文件类型并进行语法高亮显示。
在上述例子中,由于filename是example.py,函数将会使用Python语言解析器进行语法高亮显示,最终输出如下:
[39;49;00mdef [39;49;00mgreet[39;49;00m(name):
[39;49;00mprint[39;49;00m([33m"[39;49;00m[33mHello, [39;49;00m[33m"[39;49;00m + name + [33m"[39;49;00m[33m