日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python程序中怎样数个数_python3中的代码行数是怎么计算的?

發布時間:2024/1/23 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中的代码行数是怎么计算的?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。