統計C語言代碼行數的pyton代碼

首先是白嫖以下大神的代碼:統計python代碼行數小工具_linecount工具-CSDN博客

然后,讓ChatGPT幫我改為如下的完整代碼:

import os

from tkinter import Tk, Label, Button, filedialog

def open_file(file_path, encoding):

? ? try:

? ? ? ? file = open(file_path, 'r', encoding=encoding)

? ? ? ? return file

? ? except UnicodeDecodeError:

? ? ? ? return None

def count_lines_in_file(file_path, encodings=('gb2312', 'gbk', 'utf-8')):

? ? count = 0

? ? file = None

? ? for encoding in encodings:

? ? ? ? file = open_file(file_path, encoding)

? ? ? ? if file:

? ? ? ? ? ? break

? ? if not file:

? ? ? ? raise Exception(f'Error reading file: {file_path}')

? ? with file:

? ? ? ? for line in file:

? ? ? ? ? ? line = line.strip() ?# 剔除行首行尾的空白字符

? ? ? ? ? ? if line and not line.isspace() and not line.startswith('//'):

? ? ? ? ? ? ? ? # 如果不是空行、制表符行或注釋行,則計數器加1

? ? ? ? ? ? ? ? count += 1

? ?

? ? return count

def count_lines_in_directory(directory):

? ? total_count = 0

? ? for dirpath, dirnames, filenames in os.walk(directory):

? ? ? ? for filename in filenames:

? ? ? ? ? ? if filename.endswith('.c'):

? ? ? ? ? ? ? ? # 僅處理C源代碼文件

? ? ? ? ? ? ? ? file_path = os.path.join(dirpath, filename)

? ? ? ? ? ? ? ? try:

? ? ? ? ? ? ? ? ? ? count = count_lines_in_file(file_path)

? ? ? ? ? ? ? ? ? ? print(f'{file_path}: {count}')

? ? ? ? ? ? ? ? ? ? total_count += count

? ? ? ? ? ? ? ? except Exception as e:

? ? ? ? ? ? ? ? ? ? print(str(e))

? ? return total_count


?

windows = Tk()

windows.title("統計代碼行數小工具") ?#設置標題

windows.geometry("550x250")

def clicked(): ?#定義Button的事件處理函數

? ? directory = filedialog.askdirectory()

? ? L1.configure(text="C代碼文件總行數:%s 行\""

? ? ? ? ? ? ? ? ? ? ? %(count_lines_in_directory(directory)))

? ?

button = Button(windows,text="選擇文件夾并提交",command=clicked) ?#定義“提交”按鈕,并指定Button的事件處理函數

button.pack()

L1 = Label(windows,text = "",bg='white',width=200,height=10) ? ?#創建一個標簽,用于展示統計的代碼行信息

L1.pack()

windows.mainloop()

特點:支持三種編碼格式,你可以繼續加其它編碼。簡單直接 :)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719169.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719169.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719169.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【推薦算法系列十八】:DSSM 召回算法

參考 推薦系統中 DSSM 雙塔模型匯總(二更) DSSM 和 YouTubeDNN 都是比較經典的 U2I 模型。 U2I 召回 U2I 召回也就是 User-to-Item 召回,它基于用戶的歷史行為以及用戶的一些個人信息,對系統中的候選物品進行篩選,挑…

備考2024年上海高考數學:歷年選擇題真題練一練(2014~2023)

今天距離2024年高考還有三個多月的時間,今天我們來看一下2014~2023年的上海高考數學的選擇題,從過去十年的真題中隨機抽取5道題,并且提供解析。 后附六分成長獨家制作的在線練習集,科學、高效地反復刷這些真題,吃透真題…

Dockerfile執行的時候沒有執行CMD

參考:https://blog.csdn.net/Zx13170918986/article/details/130831052 在dockerfile中編寫CMD后,發現如果執行docker run -itd這樣的指令,是沒法啟動CMD腳本的,例如以下的dockerfile FROM node:16 WORKDIR /home/ COPY start_…

Sora爆火,數字人IP如何借助AIGC視頻生成軟件制作短視頻營銷?

ChatGPT、Sora等大模型的出現,創新了短視頻內容創作生產方式。但目前Sora模型無法準確模擬復雜場景的物理特性,并且可能無法理解因果關系導致視頻失真。 廣州虛擬動力基于用戶使用需求,推出了AIGC數字人視頻生成平臺,企業、品牌可…

c++基礎學習第三天(指針,結構體)

c基礎學習第三天(指針,結構體) 文章目錄 1、指針1.1、指針的基本概念1.2、指針變量的定義和使用1.3、 指針所占內存空間1.4、空指針和野指針1.5、 const修飾指針1.5.1、const修飾指針-常量指針1.5.2、const修飾常量-指針常量1.5.3、const即修…

Android MediaCodec 簡明教程(五):使用 MediaCodec 編碼 ByteBuffer 數據,并保存為 MP4 文件

系列文章目錄 Android MediaCodec 簡明教程(一):使用 MediaCodecList 查詢 Codec 信息,并創建 MediaCodec 編解碼器Android MediaCodec 簡明教程(二):使用 MediaCodecInfo.CodecCapabilities 查…

php:實現字符串補零str_pad()

說明 str_pad($input_string, $total_length, $pad_string, $pad_type); $input_string 是要填充的原始字符串。$total_length 是填充后的字符串總長度,包括原始字符串的長度。$pad_string 是用于填充的字符,通常是零。$pad_type 是填充的位置&#xff0…

欲哭無淚,2024年軟考有變!中高項只考1次了

今天可能最重磅的消息是:2024年軟考工作安排及有關事項的通知文件在瘋傳,這份文件中提到了: 軟考高級方面: 信息系統項目管理師從2次改為了1年只考1次,放在了上半年考。 系統規劃與管理師依然保持1次,但是…

每日一練:LeeCode-707. 設計鏈表 【鏈表+虛擬頭結點+設計】

每日一練:LeeCode-707. 設計鏈表 【鏈表虛擬頭結點設計】 思路設置虛擬頭節點 本文是力扣 每日一練:LeeCode-707. 設計鏈表 【鏈表虛擬頭結點設計】 學習與理解過程,本文僅做學習之用,對本題感興趣的小伙伴可以出門左拐LeeCode-70…

0101二階與三階行列式-行列式-線性代數

一 引例 求解二元一次方程組 { a 11 x 1 a 12 x 2 b 1 a 21 x 1 a 22 x 2 b 2 \begin{cases} a_{11}x_1a_{12}x_2b_1\\ a_{21}x_1a_{22}x_2b_2\\ \end{cases} {a11?x1?a12?x2?b1?a21?x1?a22?x2?b2?? 解: 1 a 21 ? 2 a 11 ? x 2 a 11 b 2 ? a…

Python函數的閉包

嵌套函數 在一個函數內部定義的函數稱為嵌套函數 閉包的形成 內層函數對外層函數非全局變量的引用就會形成閉包 閉包作用 保證數據安全 例子 li [] def average(value):li.append(value)return sum(li)/len(li) 如上面代碼li[]這個列表人人都能修改,這樣就…

自然語言處理實戰項目26-NLP模型訓練中前置應用之分詞方法的應用

大家好,我是微學AI,今天給大家介紹一下自然語言處理實戰項目26-NLP模型訓練中前置應用之分詞方法的應用。本文詳細介紹了自然語言處理(NLP)模型訓練中前置應用之分詞方法的應用。文章首先簡要概述了NLP的概念和分詞在其中的重要性。隨后,文章詳細介紹了四種主要的分詞方法…

MQL5學習之簡單移動平均線MA的編寫

昨天還是有點高估自己了,MACD相對較難一點,改學MA的編寫,首先明確MA的計算,假如有4個值,p[1,2, 3, 4], period3, 則v[0]p[0], v[1]p[1],v[2](p[0]p[1]p[2])/32, v[3](v[2]*3p[3]-p…

瀏覽器展示Blob/File文件

1. 瀏覽器展示Blob/File文件 I.Blob格式轉Base64格式 當我們接收到后端傳輸過來的文件時,很多時候我們需要將傳過來的文件轉為Base64格式。如后端傳來驗證碼圖片時等 下面將提供函數: // Blob轉Base64 export const blobToBase64 (blob: Blob) >ne…

ChatGPT論文指南|ChatGPT如何助力論文中的數據分析!【建議收藏】

點擊下方▼▼▼▼鏈接直達AIPaperPass ! AIPaperPass - AI論文寫作指導平臺 公眾號原文▼▼▼▼: ChatGPT論文指南|ChatGPT如何助力論文中的數據分析!【建議收藏】 小編在之前的論文寫作流程中,介紹了大量論文文字工作&#xff…

Effective objective-c-- 內存管理

Effective objective-c-- 內存管理 前言理解引用計數引用計數工作原理屬性存取方法中的內存管理自動釋放池保留環要點 以ARC簡化引用計數使用ARC時必須遵循的方法和命名規則變量的內存管理語義ARC如何清理實例變量覆寫內存管理方法要點 在dealloc方法中只釋放引用并解除監聽要點…

Mybatis-Plus 5分鐘快速上手,10分鐘熟練使用

小伙伴們好,歡迎關注,一起學習,無限進步 以下為學習 mybatis-plus 過程中的筆記 mybatis-plus 官網地址:https://mp.baomidou.com/ 文章目錄 特性快速開始mybatis-plus 配置插入測試及雪花算法主鍵生成策略查詢更新刪除查詢指定字…

Text2SQL 和 智能問答 的提示詞寫法

Text2SQL 生成 Query SQL System Message You are a {dialect} expert. Given an input question, creat a syntactically correct {dialect} query to run. Unless the user specifies in the question a specific number of examples to obtain, query for at most {top_k} r…

Linux 創建.NET 服務

文章目錄 創建服務啟用服務啟動 & 重啟服務查看服務狀態問題排查 創建服務 將服務文件上傳到 /home/mes/api-mes-dev, 其他服務修改對應的目錄在 /usr/lib/systemd/system/ 創建 mesapi-dev.service, 其他服務修改對應文件名 [Unit] Descriptionmesapi-dev service[Servi…

探索Linux世界:初次接觸和基本指令(文件操作)

文章目錄 1.基本介紹和準備2.基本指令和Linux的基本操作3.幾個重要基本指令3.1 ls - 列出文件和目錄3.1.1文件的知識3.1.2 .和..文件 3.2pwd - 顯示當前工作目錄3.2.1路徑知識 3.3 cd - 切換目錄3.4 touch - 創建文件或更新時間戳3.5mkdir - 創建新目錄3.6rm - 刪除文件或目錄3…