一、获取路径
注释很详细了
#导入OS模块
import os
#待搜索的目录路径
path =r"C:\Users\*****\Desktop\*******\整理并清洗过的数据\筛选过后"
#待搜索的名称
#定义保存结果的数组
result = []
def findfiles(files_path, files_list):
#查找文件代码
files = os.listdir(files_path)#listdir指的是找寻当前目录下全部文件和文件夹
for s in files:
s_path = os.path.join(files_path, s)#将找到的文件名或者文件夹名与files_path连接起来
if os.path.isdir(s_path): #如果是目录,循环调用该函数
findfiles(s_path, files_list)
elif os.path.isfile(s_path):#如果是文件,存入结果
result.append(s_path)
#print(files_list)
#print(result)
if __name__ == '__main__':
findfiles(path,result)
dict2020=[]
for i in range(len(result)):
#print(result[i])
#check_result=result[i][-12:]
#print(check_result)
dict2020.append(result[i])
print(dict2020)
print(len(dict2020))
然后就可以从文件路径中读取文件了,with open(i, 'r',encoding='gb18030')
注意“rb”是以二进制的方式打开,encoding是读取文件的编码方式。可以用记事本打开文件,看是utf-8还是gbk,文档格式是windows还是unix,可以下载一个notepad++进行转换。
有的文件读取时还会出现莫名其妙的错误,比如文档格式是windows,编码也是gbk,可就是报字符解析错误,无法读取文件。此时可以将这一句换成这个input = open(input_path,"r",encoding="gbk",errors="ignore")
忽视非法字符的错误,一般都可以了
读取文件时还可以用pandas
data = pd.read_csv(e,encoding="gb18030",usecols=[15])#读取文件的第15列(从0开始)也可以[6,8,15]同时读取多列
也可以全部读取出来,然后选取列名挑出数据
name=['生产厂家']
test=pd.DataFrame(columns=name,data=list)
读取来的data时Dataframe的格式
将其转换为list:
valuesd=data.drop_duplicates()#去重
value2=valuesd.values.flatten()
value3=value2.tolist()
对列表进行排序
sorted(dict2020_num,reverse=True)#按照从大到小的顺序排列
对列表进行计数
num=list_procut.count("*******")
print(num)
将两个列表合为一个字典
d = dict(zip(list_procut, product_num))
对合成后的字典进行排序
d_order=sorted(d.items(),key=lambda x:x[1],reverse=True)#按照第2位的数值来排序