从docstring中找到python文件的作者

时间:2013-05-30 07:40:49

标签: python python-3.x docstring

我正在尝试编写一个程序,该程序具有通过查找docstring中的Author字符串来查找和打印文件作者的函数。我已经设法获得下面的代码来打印一个文件的作者,该文件具有作者字符串,后跟作者名称以及作者字符串后面没有名称。我遇到问题的是在作者字符串根本不存在时尝试打印Unknown,即文档字符串的任何部分都不包含Author

N.B。 lines只是在文件上使用readlines()构建的列表。

 def author_name(lines):
    '''Finds the authors name within the docstring'''
    for line in lines:
        if line.startswith("Author"):
            line = line.strip('\n')
            line = line.strip('\'')
            author_line = line.split(': ')
            if len(author_line[1]) >=4:   
                print("{0:21}{1}".format("Author", author_line[1])) 
            else:
                print("{0:21}{1}".format("Author", "Unknown"))

1 个答案:

答案 0 :(得分:0)

如果您正在编写函数,则返回一个值。不要使用print(仅用于调试)。使用return后,如果找到作者,则可以提前退回:

def author_name(lines):
    '''Finds the authors name within the docstring'''
    for line in lines:
        name = 'Unknown'
        if line.startswith("Author"):
            line = line.strip('\n')
            line = line.strip('\'')
            author_line = line.split(': ')
            if len(author_line[1]) >=4:   
                name = author_line[1]
            return "{0:21}{1}".format("Author", name)  # ends the function, we found an author

    return "{0:21}{1}".format("Author", name)

print(author_name(some_docstring.splitlines()))

如果没有以return开头的行,则仅执行最后一个Author语句,因为如果有,则该函数将提前返回。

或者,因为我们将name默认为Unknown,您也可以使用break提前结束循环并返回最后一行:

def author_name(lines):
    '''Finds the authors name within the docstring'''
    for line in lines:
        name = 'Unknown'
        if line.startswith("Author"):
            line = line.strip('\n')
            line = line.strip('\'')
            author_line = line.split(': ')
            if len(author_line[1]) >=4:   
                name = author_line[1]
            break  # ends the `for` loop, we found an author.

    return "{0:21}{1}".format("Author", name)