python-file练习题,统计代码行数,统计问文件内每个英文的个数


"""
12、请说明python2 与python3中的默认编码是什么?
答:python2重视 ASCII,python3中默认编码方式是UTF-8
"""
"""
13、为什么会出现中文乱码?你能列举出现乱码的情况有哪几种?
答:出现乱码就是由于编码的方式不一致导致的。
1,mac上编码方式为utf-8,windows编码方式为gbk,同一个文件放在两个不同的平台显示的内容不一样的
"""
"""
14、分别写出在windows和mac上用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练习题'))