python-file練習題(統計代碼行數,統計問文件內每個英文的個數)



"""
12、請說明python2 python3中的默認編碼是什么?

答:python2重視 ASCIIpython3中默認編碼方式是UTF-8
"""

"""
13、為什么會出現中文亂碼?你能列舉出現亂碼的情況有哪幾種?
答:出現亂碼就是由於編碼的方式不一致導致的。
1mac上編碼方式為utf-8windows編碼方式為gbk,同一個文件放在兩個不同的平台顯示的內容不一樣的
"""

"""
14、分別寫出在windowsmac上用py2輸出中文怎么做?
print(u'中文')
文件開頭 -*-conding:utf-8-*-
"""

"""
15、任一個英文的純文本文件,統計其中的每個單詞出現的個數,注意是每個單詞。。
"""
# file_path = r'C:\Users\\練習題\english_text'
# a_z_list = [chr(i) for i in range(ord('a'),ord('z')+1)]
# A_Z_list = [chr(i) for i in range(ord('A'),ord('Z')+1)]
# zimu_set = set(a_z_list)|set(A_Z_list) # 大小寫字母的集合
#
# f = open(file_path,'r',encoding='utf-8')
# text = f.read() # 文本的內容讀取出來,放在一個變量里(此時 存到了內存)
# f.close()
# count_set = set(text) & zimu_set # 統計文章出現的字母,取文章出現的字符和大小寫字母集合的交集
# print('文章出現的字母為 :{}'.format(count_set))
# print('文章未統計其他字符為:{}'.format(set(text) - zimu_set))
# print('文章中未出現的字母為:{}'.format(zimu_set - set(text)))
# for i in count_set:
# print(r'{}出現了{}'.format(i,text.count(i)))


"""
16、有個目錄,里面是你自己寫過的程序,統計一下你寫過多少行代碼。包括空行和注釋,但是要分別列出來。
"""

import os


def query_my_program_files(dirname):
"""
根據目錄查詢目錄下所有的.py文件的代碼行數(包含空行和注釋)
:param dirname:傳入目錄的絕對路徑
:return: 字典key:文件名,value:代碼行數(包含空行和注釋)
"""
file_list = os.listdir(dirname)
print(file_list)
my_program_file = []
for i in file_list:
if os.path.isfile(i) and i.endswith('.py') and i != '__init__.py': # 是否是文件,是否是.py結尾,是否不是‘__init__.py’
my_program_file.append(i)
print(my_program_file)

# line_count = 0 # 記錄行數不能放在外面,不然會累加。放在每次打開文件聲明一個這樣新打開一個就會清零
dict_file_lines = {}
for i in my_program_file:
my_program_file_path = os.path.join(dirname, i)
with open(my_program_file_path, 'r', encoding='utf-8') as f:
line_count = 0 # 記錄行數
while True:
if f.readline():
line_count += 1
dict_file_lines[i] = line_count
else:
break
# print (
# """
# ---------------
# {}】程序寫了 {} 行代碼
# ---------------
# """.format(i, line_count)
# )
return dict_file_lines


print(query_my_program_files(r'xxx練習題'))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM