Получение строки документа файла Python

#python #docstring

#python #строка документа

Вопрос:

Есть ли способ получить строку документа файла Python, если у меня есть только имя файла? Например, у меня есть файл Python с именем a.py . Я знаю, что у него есть строка документа (которая была задана ранее), но не знаю о ее внутренней структуре, т. Е. Есть ли у нее какие-либо классы или main и т.д.? Я надеюсь, что я не забыл что-то довольно очевидное, Если я знаю, что у него есть основная функция, я могу сделать это таким образом, используя импорт

      filename = 'a.py'
     foo = __import__(filename)
     filedescription = inspect.getdoc(foo.main())
  

Я не могу просто сделать это таким образом:

      filename.__doc__    #it does not work
  

Ответ №1:

Вы должны делать…

 foo = __import__('a')
mydocstring = foo.__doc__
  

или еще проще…

 import a
mydocstring = a.__doc__
  

Комментарии:

1. Ааа, полученное с помощью import, превращает его в объект и, следовательно.__doc__ работает, в противном случае a просто обрабатывается как строка и, следовательно, завершается ошибкой.

Ответ №2:

 import ast

filepath = "/tmp/test.py"

file_contents = ""
with open(filepath) as fd:
    file_contents = fd.read()
module = ast.parse(file_contents)
docstring = ast.get_docstring(module)
if docstring is None:
    docstring = ""

print(docstring)
  

Ответ №3:

И если вам нужны строки документа модуля, в котором вы уже находитесь :

 import sys
sys.modules[__name__].__doc__