您如何在python中使用write()将文档字符串写入文件?

时间:2019-02-12 06:44:36

标签: python pytest docstring

我正在使用pytest检查多行文档字符串,而在测试中检查这些多行注释的方法包括制作一个临时文件,并使用write()来写入文档字符串,然后进行搜索。

def test_file_contains_multiline_python_comment_count(tmpdir):
    """Checks that the multiline python comment count works"""
    hello_file = tmpdir.mkdir("subdirectory").join("Hello.py")
    hello_file.write(""" hello \n world """)
    assert hello_file.read() == """ hello \n world """
    assert len(tmpdir.listdir()) == 1
    comment_count = entities.count_entities(
        hello_file.basename, hello_file.dirname, comments.count_multiline_python_comment
    )
    assert comment_count == 1

但是,我无法弄清楚如何编写实际的文档字符串。例如,"""hello"""会简单地显示为hello

2 个答案:

答案 0 :(得分:0)

如果我需要将docsting写入文件,我将使用__doc__属性使用this方式来接收文档字符串:

def some_function():
    """some docstring
    multiline""" 
    return 0

>>>    some_function.__doc__
    'some docstring\n    multiline'

>>>    type(some_function.__doc__)
    <class 'str'>

在此之后,将此文档编写为常规字符串:

hello_file.write(some_function.__doc__)

答案 1 :(得分:0)

正如评论中已经提到的,"""仅显示多行字符串。如果您只想向文件写入文档字符串,则可以直接从具有__doc__属性的函数中获取文档字符串。然后,您可以将其以任何想要的格式写入到这样的文件中:

def test():
    """
    This is docstring of the test function
    """
    return "Hello"

if __name__ == "__main__":
    with open("out.txt", "w") as f:
        f.write('"""\n' + (test.__doc__).strip() + '\n"""')