python程序中怎样数个数_python3中的代码行数是怎么计算的?
作為一個編程人員,每天除了測試外,很大一部分的時間都在敲代碼中度過。那么有沒有人想過我們寫的代碼到底有多少行呢?逐條去查數目顯然是不現實的,不說浪費了大量的時間,而且我們人工的查數會出現失誤,一行行密密麻麻的代碼也看著頭暈眼花的。下面小編就教大家python3中代碼行數計算的方法。
首先判斷傳入參數是否為文件夾,不是則打印出提示,否則繼續(無返回),獲得目錄后,yongos.listdir對路徑下文件進行遍歷,其中也包含文件夾,再次判斷是否為文件夾,是的話則遞歸調用此函數,否則開始執行行數統計,這里用os.path.join將路徑與文件名進行拼接,方便之后直接傳給函數,邏輯很簡單,無非是執行文件判斷,判斷是哪類文件,在調用對應的注釋監測正則代碼段進行抓取,抓取到則行數+1,空白行也是一樣的原理,用strip(去除前后空格),然后行內內容為空則為空行,代碼段即為總行數減去其他兩類行數,最后在外層將所有文件對應的代碼段累加即為total。
關鍵
函數內部是可以訪問全局變量的,問題在于函數內部修改了變量,導致python認為它是一個局部變量。
所以,如果在函數內部訪問并修改全局變量,應該使用關鍵字 global 來修飾變量。import?os
import?re
#定義規則抓取文件中的python注釋
re_obj_py?=?re.compile('[(#)]')
#定義規則抓取文件中的C語言注釋
re_obj_c?=?re.compile('[(//)(/*)(*)(*/)]')
#判斷是否為python文件
def?is_py_file(filename):
if?os.path.splitext(filename)[1]?==?'.py':
return?True
else:
return?False
#判斷是否為c文件
def?is_c_file(filename):
if?os.path.splitext(filename)[1]?in?['.c',?'.cc',?'.h']:
return?True
else:
return?False
#定義幾個全局變量用于計算所有文件總和(全部行數、代碼行數、空行數、注釋行數)
all_lines,?code_lines,?space_lines,?comments_lines?=?0,?0,?0,?0
#判斷是否為文件夾,不是則輸出提示
def?count_codelines(dirpath):
if?not?os.path.isdir(dirpath):
print('input?dir:?%s?is?not?legal!'?%?dirpath)
return
#?定義幾個全局變量用于計算每個文件行數(全部行數、代碼行數、空行數、注釋行數)
global?all_lines,?code_lines,?space_lines,?comments_lines
#列出當前文件夾下的文件(包含目錄)
all_files?=?os.listdir(dirpath)
for?file?in?all_files:
#將文件(目錄)名與路徑拼接
file_name?=?os.path.join(dirpath,?file)
if?os.path.isdir(file_name):
count_codelines(file_name)
else:
temp_all_lines,?temp_code_lines,?temp_space_lines,?temp_comments_lines?=?0,?0,?0,?0
f?=?open(file_name)
for?line?in?f:
temp_all_lines?+=?1
if?line.strip()?==?'':
temp_space_lines?+=?1
continue
if?is_py_file(file_name)?and?re_obj_py.match(line.strip()):
temp_comments_lines?+=?1
if?is_c_file(file_name)?and?re_obj_c.match(line.strip()):
temp_comments_lines?+=?1
temp_code_lines?=?temp_all_lines?-?temp_space_lines?-?temp_comments_lines
print('%-15s?:?all_lines(%s)\t?code_lines(%s)\t?space_lines(%s)\t?comments_lines(%s)'
%?(file,?temp_all_lines,?temp_code_lines,?temp_space_lines,?temp_comments_lines))
all_lines?+=?temp_all_lines
code_lines?+=?temp_code_lines
space_lines?+=?temp_space_lines
comments_lines?+=?temp_comments_lines
if?__name__?==?'__main__':
count_codelines('test')
print('\n****?TOTAL?COUNT?****\nall_lines?=?%s\ncode_lines?=?%s\nspace_lines?=?%s\ncomments_lines?=?%s'?%?(all_lines,?code_lines,?space_lines,?comments_lines))
在使用以上超長的計算代碼之前,小伙伴們一定要理清計算行數的思路,再進行下一步的操作。畢竟如果計算的過程中出現問題,想要找出錯誤點是非常困難的。更多Python學習指路:PyThon學習網教學中心。
總結
以上是生活随笔為你收集整理的python程序中怎样数个数_python3中的代码行数是怎么计算的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 窗体 局部变量转换为全局_从嵌入式编程中
- 下一篇: centos7自带python版本_Ce