python 不知道是啥
1.判断两个大文件是否是同一个文件
import os
import hashlib
import time
start = time.time()
path1 = r"E:\视频资料\elk\1.zip"
path2 = r"E:\视频资料\elk\2.zip"
def file_hash(path):
file_size = os.path.getsize(path)
md5 = hashlib.md5()
with open(path1,'rb') as info:
while file_size >=8192:
content = info.read(8192)
md5.update(content)
file_size -=8192
else:
content = info.read(file_size)
if content:
md5.update(content)
return md5.hexdigest()
# def file_hash(path):
# md5 = hashlib.md5()
# with open(path1, 'rb') as info:
# md5.update(info.read())
# return md5.hexdigest()
def file(path1,path2):
return file_hash(path1) ==file_hash(path2)
ret = file(path1,path2)
print(ret)
end =time.time()
print(end-start)
通过制定读取大小计算和直接读取计算的hash是一样的,但是使用时间会有所不同,直接将文件全部读入到内容中会占用时间更长,cpu使用率在一定时间内会飙升!
上面代码刚开始不懂得是:按照指定大写获取到的hash和直接读取到的hash的是一样的么?通过验证确定一样的
#以下两种犯法获取到的"helloworld"的hash是一样的 md5 = hashlib.md5() md5.update(b'hello') md5.update(b'world') ret = md5.hexdigest() print(ret) md5 = hashlib.md5() md5.update(b'helloworld') ret = md5.hexdigest() print(ret)
2.python处理大文件
def func():
with open('t','r',encoding='utf-8')as f:
for i in f:
i = i.strip('\r\n')
yield i
g = func()
for i in g:
try:
print(i)
except StopIteration:
# pass
print(1)
3.模拟微信红包
import random
def red_pac(money,num):
ret = random.sample(range(1,money*100),num-1) #取出9个点,乘以100 是考虑小数的情况
ret.sort() #将结果从大到小排序
ret.insert(0,0)
#为什么将0和100放进去刚开始没想明白,后来发现加上sample的中是分成了9分,加上最小值0和最大值100之后是11个
#11个数之间两两相减就是10个红包的金额,
#因为sample是取一个范围之间的不重复数字,所以每个人的概率也是一样的
ret.append(money*100)
for i in range(len(ret)-1):
value = ret[i+1] - ret[i] #算出相邻节点之间的差,就是红包的金额,ret后一个减去前一个数字加起来除以100正好是100
yield value/100
g = red_pac(100,10) #发100块钱,发10个红包
for i in g:
print(i)
4.三级菜单
china_ditie = {
"北京": {
"一号线": ["四惠", "大望路", "天安门", "西单"],
"二号线": ["北京站", "朝阳门", "东直门", "西直门"],
"三号线": ["国贸", "三元桥", "知春路", "巴沟"]
},
"上海": {
"四号线": ["徐家汇", "人民广场", "延长路", "共康路", "呼兰路"],
"五号线": ["东昌路", "静安寺", "江苏路", "虹桥火车站"],
"六号线": ["宝山路", "赤峰路", "曹阳路", "虹桥路", "宜山路"]
},
"广州": {
"七号线": ["东山口", "农讲所", "烈士陵园", "公园前", "体育西路"],
"八号线": ["黄边", "纪念堂", "三元里", "白云公园"],
"九号线": ["沙河顶", "北京路", "一德路", "文化公园"]
},
"深圳": {
"一号线": ["高新园", "桃园", "白石洲", "华侨城"],
"四号线": ["白石龙", "明乐", "少年宫", "红山"],
"五号线": ["大学城", "兴东", "西里", "深圳北站"]
},
}
字典
for item in china_ditie: #取出整个字典中的key,然后循环
print(item)
key1 = input('>>>') #接收的是循环出来的key,然后循环这个key所对应的值
for item1 in china_ditie[key1]:
print(item1)
key2 = input('>>>')
for item2 in china_ditie[key1][key2]:
print(item2)
#字典有几层,就应该有几个for循环
方法一
l = [china_ditie]
while l:
for item in l[-1]:
print(item)
name = input(">>>")
if name.upper() == "Q":
l.clear()
elif name.upper() == "B":
l.pop()
else:
if l[-1].get(name):
l.append(l[-1][name])
'''
这个解法是使用列表的pop()方法和append()方法,实现了一个简单的栈操作
将字典添加到列表里面,通过l[-1]取出字典,并将其键打印到屏幕上,通过用户输入的来判断
是否是屏幕上打印的出来的字符串,如果不是就让用户重新输入,如果是的话
就验证l[-1]中原始的字典中是否有这个键,如果有这个键,就将这个键所对应的二层字典加入到l列表中,这样l列表就有
两个以字典为元素的值了。在通过while循环取出l[-1]元素,就是我们刚刚添加进去的二层字典进行显示
如果输出b则返回上一层,就删除l[-1]这个列表中最后面的字典。就能显示其上一层。
主要是用列表的方法实现了后进先出的特点,当显示到最后n层的时候,列表里面就会有n个以字典为元素的值
'''
方法二
5.计算文件夹大小
import os
def get_zise(path):
li = [path]
file_size = 0
while li:
path = li.pop()
dirs = os.listdir(path)
for item in dirs:
path_dir = os.path.join(path,item)
if os.path.isfile(path_dir):
file_size +=os.path.getsize(path_dir)
else:
li.append(path_dir)
return file_size
ret = get_zise(r'E:\oldboy\python 20\讲课\day01')
print(ret)
6.python编写计算器
#^尖括号在[]里面表示非
def chengchu(res):
if '*' in res:
a,b = res.split('*')
return str(float(a)*float(b))
else:
a, b = res.split('/')
return str(float(a) / float(b))
import re
exp = '1 - 2 * ( (60-30 + (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )*(-40/5)) - (-4*3)/ (16-3*2) )'
exp =exp.replace(" ",'')
def format_exp(exp):
'''
完成表达式格式整理,将一些叠在一起的符号整理成一个符号
:param exp: str数据类型的表达式 '1.23++3+-4--5'
:return: 整理之后的str数据类型的字符串,'1.23+3-4+5'
'''
exp = exp.replace('++','+')
exp = exp.replace('-+','-')
exp = exp.replace('+-','-')
exp = exp.replace('--','+')
return exp
'''
#匹配出扩号最里面的表达式,(9-2*5/3+7/3*99/4*2998+10*568/14)
'''
ret = re.search('\([^()]+\)', exp) #(9-2*5/3+7/3*99/4*2998+10*568/14)
ret5 = ret.group()
while True:
'''
\d+(\.\d+)?[*/]-?\d+(\.\d+)?
\d+(\.\d+)?:匹配整数和小数,小数出现0次或1次
[*/]:匹配乘法和除法
-?\d+(\.\d+)?:匹配负数和负小数
'''
ret1 = re.search('\d+(\.\d+)?[*/]-?\d+(\.\d+)?',ret5) #列出每一个乘除式子 2*5
if ret1:
ret2 = chengchu(ret1.group()) #计算每一个乘除10
ret5 =ret5.replace(ret1.group(),ret2)
no_bracket_exp = format_exp(ret5)
# 再计算加减法
res_lst = re.findall('[-+]?\d+(?:\.\d+)?', no_bracket_exp)
sum_n = 0
for i in res_lst:
sum_n += float(i)
print (sum_n)
else:
break
#有的时候,往往取不到变量的名字
#通过变量的字符串的名字,可以通过反射获取
返回系列
python 不知道是啥的更多相关文章
- 想学Python不知道从哪里开始学?|百度网盘免费下载| 这本入门书了解下
百度网盘免费下载:编程小白的第一本 Python 入门书 提取码:s0pc Python是什么 Python是一种计算机程序设计语言,由吉多·范罗苏姆创造,第一版发布于1991年,可以视之为一种改良的 ...
- 初学Python不知道做什么项目好?来看看练手项目如何?
对于初学者来说,在学习编程的初期,由于基础知识点的学习是比较无聊的,所以大家可能会有所反感,为了减弱大家的反感,我给大家带来一个简单的小项目——实现屏保计时器,这个项目就算是刚学Python的小伙伴, ...
- arcgis python 不知道一个工具怎么用
完整的工具帮助信息 import arcpy print(arcpy.Usage("Buffer_analysis")) print(arcpy.Usage("MakeF ...
- Python 学习拾遗
该博文主要适应于python2.7,并没有对py3进行测试. 主要记录学习python过程中容易出现的一些小问题.小错误,相信能给你启发. 1.剔除一个字符串中的所有空格(假设该字符串是s) &quo ...
- <转>Python的内存泄漏及gc模块的使用分析
一般来说在 Python 中,为了解决内存泄漏问题,采用了对象引用计数,并基于引用计数实现自动垃圾回收.由于Python 有了自动垃圾回收功能,就造成了不少初学者误认为自己从此过上了好日子,不必再受内 ...
- 在大型项目上,Python 是个烂语言吗
Robert Love, Google Software Engineer and Manager on Web Search. Upvoted by Kah Seng Tay, I was the ...
- hadoop streaming编程小demo(python版)
大数据团队搞数据质量评测.自动化质检和监控平台是用django,MR也是通过python实现的.(后来发现有orc压缩问题,python不知道怎么解决,正在改成java版本) 这里展示一个python ...
- Python的列表
1. Python的列表简介 1. 1 列表的定义 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型.列表中的每个元素都分配一个数字 ,即它的 ...
- Python的变量及简单数据类型
Python的变量及简单类型 1. 变量 在Python编程中,变量是用来存放值或对像的容器.变量的名称可以自定义,但需遵循一定的规范,否则可能会引发一些错误.Python的变量可以分为数字.字符和 ...
随机推荐
- laravel 黑名单功能实现
创建黑名单表迁移:php artisan make:model Models/BlackFeeds -m (生成模型和迁移文件) 迁移文件中创建如下字段: public function up( ...
- Visual Studio 2013 突然不高亮,编译报错
同事的电脑,估计是windows更新失败的原因,C盘容量减小到不到1G,VS的高亮也坏了,重启后硬盘容量增加了但是仍然不高亮. 解决办法记录一下: 重置下. 开始菜单 -->所有程序--> ...
- ExtJs5的基本理论概念
概述 理解ExtJs里面的一些基本关键字的概念是使用ExtJs搭建MMVC框架的基础,在ExtJs中,我们通常遇到ExtJs的配置和启动项Ext.application(),该方法是ExtJs程序初始 ...
- 服务器资源监控插件(jmeter)
零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过 实时监控,可以准确的把握不同测试场景下服务器资源消 ...
- 20172328 2018-2019《Java软件结构与数据结构》第八周学习总结
20172328 2018-2019<Java软件结构与数据结构>第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展?是什么呢?你猜对了!ヾ(◍°∇°◍) ...
- NOIP2011 D2T3 观光公交 做题笔记
目录 归纳题目的性质 算法 60分 100分 code 大家来找茬 总结 归纳题目的性质 每一个加速器效果相同(1) 车子等到所有人上车之后才会发车, 这个最早发车时间不由加速器的配比决定(2) 要优 ...
- windows下安装 mysql 8.0 以上版本以及遇到的问题
Windows 上安装 MySQL Windows 上安装 MySQL 相对来说会较为简单,地那就链接 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql ...
- BOM 浏览器对象模型_渲染引擎_JavaScript 引擎_网页加载流程
1. 浏览器核心的两个组成部分 渲染引擎 将网页代码渲染为用户视觉可以感知的平面文档 分类: Firefox Gecko 引擎 Safari WebKit 引擎 Chrom ...
- 螺旋矩阵 java实现(待消化)
import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/4 17:13 * @description ...
- 我了解到的新知识之----如何使用Python获取最新外汇汇率信息
这个需求本来是来源于公司同事工作中需求,用户需要使用数据分析工具Power BI抓取多页的中国银行官网上当天的外汇数据.但是没能研究出来. 我就开始在网络上找关于使用python来抓取当天汇率的案例分 ...