检测源文件的缩进样式

时间:2019-02-08 22:14:48

标签: python metaprogramming indentation

我正在编写一个与将代码注入Python代码并重新编译有关的工具。

我需要能够检测给定的源文件(或其中的功能)是否使用空格或制表符作为缩进符号。有没有简便的方法?

1 个答案:

答案 0 :(得分:0)

您可以尝试通过换行来解析文档而不进行修剪,然后检查每行是否以空格或制表符开头,然后在检测到任何一行时立即退出?例如:

re.match(' ', line): -> space
re.match('\t', line): -> tab

或者,您可以使用startwith()方法-循环运行它,并在行首检测到制表符或空格时退出:

' foo'.startswith(('\s'))
True
'   foo'.startswith(('\t'))
True

我认为一个潜在的问题是文件是否使用制表符,但是有人在输入注释(#)之前先按下空格-但我认为检测注释并忽略这些注释应该不难。