2012-10-21 14 views
0

我試圖找到存儲在python文件中的類或函數內的代碼行數 我的代碼是這樣的...我想要的是找到一個類的代碼行數不是所有的文件...有沒有什麼好辦法呢?python中的類中的代碼行?

import inspect 
import foo  
for a,b in inspect.getmembers(foo): 
    if inspect.isclass(b): 
     print a # find a class within the file 
+0

即時通訊假設你不能只是打開文件,看看裏面? –

回答

3
len(inspect.getsourcelines(a)[0]) 

從inspect.getsourcelines文檔:

Return a list of source lines and starting line number for an object.

這就是爲什麼你需要的0指數

+0

感謝您的回覆......但我試圖運行您的代碼,它給了我錯誤... ... TypeError:'Foo'不是模塊,類,方法,函數,回溯,框架或代碼對象... 'Foo'是foo.py – tkyass

+0

中的班級名稱。我有一些語法錯誤..非常感謝您的幫助 – tkyass

+0

此方法的問題在於它計算代碼行和註釋。有什麼方法可以只計算沒有評論和文檔字符串的代碼行嗎? – tkyass

3

您仍然可以使用inspect

In [6]: from test import A 

In [7]: import inspect 

In [8]: inspect.getsourcelines(A) 
Out[8]: 
(['class A(object):\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n', 
    ' pass\n'], 
1) 

len(inspect.getsourcelines(A)[0])會返回你想要的。

+0

非常感謝您的回答..它的工作原理 – tkyass

+0

@ user1762447我建議您閱讀首先通過「檢查」文檔,然後您將更有效地完成代碼。 – iMom0

+0

相信我我多次嘗試閱讀檢查文檔,但很多事情仍然不清楚。我是Python新手,這就是爲什麼我認爲我還不熟悉Python文檔。我還有一個問題,我試圖修改你提供的代碼,使它只計算代碼的長度沒有評論,但它沒有工作..有沒有辦法這樣做?可以通過使用inspect.getdocs和inspect.getcomment並減去它們? – tkyass