python pydoc-文件生成工具(彙總tcy)
pydoc-文件生成工具 2018/9/8
------------------------------------------------------------------------------
1.1.用途:
是python自帶的一個文件生成工具,使用pydoc可以很方便的檢視類和方法結構
python中pydoc模組可以從python程式碼中獲取docstring,然後生成幫助資訊。
主要用於從python模組中自動生成文件,這些文件可以基於文字呈現的、也可以生成WEB 頁面的,還可以在伺服器上以瀏覽器的方式呈現!
pydoc - Python文件工具
-------------------------------------------------------------------------------
1.2.方法:
pydoc <name> ...
顯示關於某事的文字文件。 <name>可以是a的名稱 Python關鍵字,主題,功能,模組或包,或點綴引用模組或模組中的類或函式包。
如果<name>包含'\\',則將其用作a的路徑 Python原始檔到文件。如果名稱是'關鍵字','主題',或“模組”,顯示這些內容的列表。
pydoc -k <keyword>
在所有可用模組的概要行中搜索關鍵字。
pydoc -n <hostname>
使用給定的主機名啟動HTTP伺服器(預設值:localhost)。
pydoc -p <port>
在本地計算機上的給定埠上啟動HTTP伺服器。港口
數字0可用於獲取任意未使用的埠。
pydoc -b
在任意未使用的埠上啟動HTTP伺服器並開啟Web瀏覽器
以互動方式瀏覽文件。此選項可用於與-n和/或-p組合。
pydoc -w <name> ...
將模組的HTML文件寫入當前檔案目錄。如果<name>包含'\\',則將其視為檔名;
如果它命名一個目錄,為所有內容編寫文件。
------------------------------------------------------------------------------
2.檢視文件方法
2.1.啟用伺服器檢視
方法1:啟動本地服務,在web上檢視文件
C:\Users\Administrator>python -m pydoc -p 1234
Server ready at http://localhost:1234/
Server commands: [b]rowser, [q]uit
server>
方法2:通過http://localhost:1234來訪問檢視文件
說明:
1、-p指定啟動服務的埠號,可以隨意指定不衝突埠號
2、只有在自建的工程根目錄下使用該命令,才能看到當前工程下所有的內容,否則只能看到python環境變數下的模組內容
3、如果本地只有一個python,可以直接使用【pydoc -p 埠號】啟動,但因為我本地有python2和python3,所以指定了用python3
-------------------------------------------------------------------------------
2.2.直接檢視*.py檔案內容
步驟1:新建檔案c:\python37\lib\test_pydoc.py
見下文:例項程式碼
步驟2:進入testpydoc.py所在目錄
C:\Users\Administrator>cd c:\python37\lib
步驟3:執行
C:\python37\lib\>python -m pydoc test_pydoc
步驟4:顯示
見下文:顯示”直接檢視test_pydoc.py檔案內容 ”
c:\python37\Lib>
-------------------------------------------------------------------------------
2.3.生成html說明文件
執行:
c:\python37\Lib>python -m pydoc -w test_pydoc
顯示:
wrote test_pydoc.html
說明:在c:\python37\Lib\test_pydoc.html文件已經生成;和上面的檢視內容相同;
預設將當前目錄下的testpydoc生成一個叫做testpydoc.html的文件,如果是目錄直接【python3 -m pydoc -w 目錄名】生成文件
如果是將整個目錄生成這種格式,不建議用這種方式,因為如果他展示目錄下的子檔案的說明時,會去子目錄下找對應.html檔案,如果檔案不存在,就會404
-------------------------------------------------------------------------------
2.4.-k查詢模組
用途:
py通過-k查詢模組,會在當前工程目錄以及python環境變數目錄下查詢包含關鍵詞的模組資訊
命令:
c:\python37\Lib>python -m pydoc -k test_pydoc
顯示:
test.pydoc_mod - This is a test module for test_pydoc
test.test_pydoc
test_pydoc - @filename: c:\python\lib\ test_pydoc.py
-------------------------------------------------------------------------------
3.1.html文件說明
通過檢視文件的方法,我們可以看到在html的文件主要分成四部分:py檔案的頂部註釋、Classes、Functions、Data
第一部分:模組的文件說明,展示模組頂部的多行註釋
註釋內如果包含了模組檔案內的class名,或方法名(),則顯示藍色,且可以點選跳轉到對應說明位置
第二部分:classes,展示class以及class下的function
1.只能展示class下的註釋,不會展示class下方法的註釋
2.class上面有#註釋時,展示#號的註釋
3.class下有”””多行註釋”””時優先展示多行註釋,就不展示頂部的#號的註釋了
第三部分:function,模組下的def方法,不是class中的方法
1.function上面有#註釋時,展示#號的註釋
2.function下有”””多行註釋”””時優先展示多行註釋,不展示頂部#號的註釋了
第四部分:data,模組下直接定義的變數,不是function或class的變數
------------------------------------------------------------------------------
3.2.註釋方法
python註釋方法:
單行註釋:使用#號進行註釋
多行註釋:使用三個雙引號或單引號來註釋多行內容
pydoc註釋展示策略:
在functions和classes前面加#註釋,或者在function和class第一行內加三個單引號或三個雙引號進行註釋
如果有三個引號的註釋方法,會優先使用三個點的註釋,其次才展示#號的註釋
注意:如果在方法或class定義後第一行使用#註釋是拉取不到註釋的
----------------------------------------------------------------------------
4.1.示例程式碼:
"""
@filename: c:\python\lib\ test_pydoc.py
@author tcy1
@desc 本模組是一個測試檔案說明pydoc讀取內容
@date 2018/9/13
說明:
classes: MyClass()
Method: class_fun1();class_fun2();class_fun3()
function: tun1(),fun2(),fun3()
Data:a,b , c1, g1
"""
#filename: c:\python\lib\ test_pydoc.py
#模組開頭單行註釋和多行註釋只能選一個最上面的顯示
__author__ = "tcy"
#fun1()上的註釋:註釋放在方法名前用'#'號註釋
def fun1(a):
a=100
print("註釋放在方法名前",a)
#fun2()上的註釋:由於下面有多行註釋,本行不會被顯示
def fun2():
"""
fun2()多行註釋;優先顯示;
"""
print("既有'#'號又有多行註釋時,優先展示多行註釋 ")
def fun3():
#在方法第一行內使用'#'註釋不生效
print("在方法內使用#號註釋,不生效")
#Myclass 類上註釋,由於有多行註釋,本行不會顯示
class MyClass():
"""
1.註釋生效順序與方法一致,優先展示類下的多行註釋
2.如沒多行註釋,顯示類上面的 ‘#’ 號註釋
"""
g1=200#變數註釋不會顯示
def __init__(self,x,y):
self.x=x #變數註釋不會顯示
self.y=y #變數註釋不會顯示
#class_fun1 ()單行註釋不顯示
def class_fun1(self):#類下方法的註釋不會展示
""" class_fun1 ()多行註釋"""
print("類下的第一個方法")
# class_fun12()單行註釋
def class_fun2(self,a):
print("類下的第二個引數,包含a引數")
def class_fun3(self):
print("類方法無註釋")
a=1 #變數註釋不會顯示
b=2 #變數註釋不會顯示
c1=MyClass(1000,-2000) #變數註釋不會顯示
-------------------------------------------------------------------------------
4.2.顯示”直接檢視test_pydoc.py檔案內容 ”
c:\python37\Lib>python -m pydoc test_pydoc
Help on module test_pydoc:
NAME
test_pydoc
DESCRIPTION
@filename: c:\python\lib\ test_pydoc.py
@author tcy1
@desc 本模組是一個測試檔案說明pydoc讀取內容
@date 2018/9/13
說明:
classes: MyClass()
Method: class_fun1();class_fun2();class_fun3()
function: tun1(),fun2(),fun3()
Data:a,b , c1, g1
CLASSES
builtins.object
MyClass
class MyClass(builtins.object)
| MyClass(x, y)
|
| 1.註釋生效順序與方法一致,優先展示類下的多行註釋
| 2.如沒多行註釋,顯示類上面的 ‘#’ 號註釋
|
| Methods defined here:
|
| __init__(self, x, y)
| Initialize self. See help(type(self)) for accurate signature.
|
| class_fun1(self)
| class_fun1 ()多行註釋
|
| class_fun2(self, a)
| # class_fun12()單行註釋
|
| class_fun3(self)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| g1 = 200
FUNCTIONS
fun1(a)
#fun1()上的註釋:註釋放在方法名前用'#'號註釋
fun2()
fun2()多行註釋;優先顯示;
fun3()
DATA
a = 1
b = 2
c1 = <test_pydoc.MyClass object>
AUTHOR
tcy
FILE
c:\python37\lib\test_pydoc.py
-------------------------------------------------------------------------------