Как вы используете write () в python для записи строки документа в файл? - PullRequest
0 голосов
/ 12 февраля 2019

Я использую 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 голосов
/ 12 февраля 2019

Как уже сказано в комментариях """ показывает только многострочную строку.Если вы просто хотите записать строку документа в файл, вы можете получить строку документа непосредственно из функции с атрибутом __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"""')
0 голосов
/ 12 февраля 2019

Если мне нужно записать документацию в файл, я буду использовать этот способ получения строки документации, используя атрибут __doc__:

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__)
...