python 阿狸的进阶之路(6)
常用模块
json
# 序列化
#将内存的数据存到硬盘中,中间的格式,可以被多种语言识别,跨平台交互数据
#json 可以将字典之类的数据类型存到字典中
import json
dic = {"a":1}
res2 = str(dic)
res = json.dumps(dic)
print(res,type(res))
print(res2,type(res2))
#{"a": 1} <class 'str'>
# {'a': 1} <class 'str'>
# python None = null
#json 只识别 "",不识别'' # user= {'name':'zym','age':25}
# with open("ccc.json",'w',encoding='utf-8 ') as f :
# f.write(json.dumps(user))
#
# #一步到位的方法
# json.dump(user,open('ddd.json','w',encoding='utf-8')) # 反序列化
import json
# with open('ddd.json','r',encoding='utf-8') as f1:
# user2 = json.loads(f1.read())
# print(user2,type(user2))
# print(user2["name"]) # 一步到位的方法
# user2 = json.load(open('ddd.json','r',encoding='utf-8'))
# print(user2['name'])
#random 随机模块
import random
print(random.random())
print(random.choice([2,'',[4,5]]))
print(random.randint(1,3))
print(random.randrange(1,3))
print(random.sample([1,2,3,['zy']],3))
print(random.uniform(1,2))
item = [1,3,5,7,9]
random.shuffle(item)
print(item)
#生成随机验证码
def make_code(n):
res = ''
for i in range(n):
b = str(random.randint(0,9))
a = chr(random.randint(65,90))
c =random.choice([a,b])
res +=c
return res print(make_code(6))
文件操作模块shutil
import shutil
shutil.copyfileobj(open('aaa','r'),open('bbb','w')) #将文件内容拷贝到另一个文件中 shutil.copyfile('f1.txt','f2.txt') #拷贝文件内容,无需打开 shutil.copymode('f1.txt','f2.txt') #仅拷贝权限,内容,组,用户均不变,目标文件必须存在 shutil.copystat('f1.txt','f2.txt') #仅拷贝信息,包括:mode bits,mtime,flags,目标文件必须存在 shutil.copy('f1.txt','f2.txt') #拷贝文件和权限,相当于linux cp -a shutil.copy2('f1.txt','f2.txt') #拷贝文件和状态信息 shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
#目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 import shutil shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
#symlinks =True 拷贝成软链接
'''
通常的拷贝都把软连接拷贝成硬链接,即对待软连接来说,创建新的文件
''' #shutil.rmtree(path[, ignore_errors[, onerror]])
#递归的去删除文件
shutil.rmtree('aaaa') ####### linux中的rm -rf命令,及其危险 shutil.move() #递归的移动文件 # shutil.make_archive(base_name, format,...)
#
# 创建压缩包并返回文件路径,例如:zip、tar
#
# 创建压缩包并返回文件路径,例如:zip、tar
#
# base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
# 如 data_bak =>保存至当前路径
# 如:/tmp/data_bak =>保存至/tmp/
# format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
# root_dir: 要压缩的文件夹路径(默认当前目录)
# owner: 用户,默认当前用户
# group: 组,默认当前组
# logger: 用于记录日志,通常是logging.Logger对象 # 将 /data 下的文件打包放置当前程序目录
# ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
# 将 /data下的文件打包放置 /tmp/目录
# ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') # shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
import zipfile
shutil.make_archive('bak','gztar',root_dir=r"你要打包的文件目录") #相当于 tar cvfz bak /root import tarfile
t = tarfile.open('bak.tar.gz') #得到一个对象
t.extractall('你想要解压到的路径')
t.close()
sys模块的进图条
#进度条
# [# ]
# [## ]
# [### ]
# [#### ]
# print('#'*1)
# print('#'*2)
# print('#'*3)
# print('#'*4)
# print('#'*5)
# import sys
# import time
# print('[%s]' %'#')
# print('[%s]' %'#')
# print('[%s]' %'#')
# print('[%s]' %'#')
# print('[%s]' %'#'*10)
# print('[%-15s]'%'###')
# print(('[%%-%ss]' % 50 )%'###')
# print('%s%%' %100)
# print(('[%%-%ss]'% 50 )%'###','%s%%' %100)
# # a percent
#
#
#
#
#
#
#
# while True:
# print(('[%%-%ss]' % 50) % '###', '%s%%' % 100,end='')
# time.sleep(0.05)
#打印不换行,end = '',覆盖打印即将光标返回开头\r
# import time
# def progress(percent,width = 50):
# if percent>1:
# percent = 1
# print(('\r[%%-%ds]'%width)%('#'*int(percent*width)),end='')
#
# recv_size = 0
# total = 10241
#
# while recv_size < total:
# time.sleep(0.1)
# recv_size+=1024
# percent = recv_size/total
# progress(percent) #进度条
print("[%s]" % '#')
print("[%s]" % '##')
print("[%s]" % '###')
#先考虑将[]设置为指定的宽度,由于是左对齐
print("[%-50s]" % '###')
#并且不能写死了
print(('[%%-%ds]' %50)) #[%-50s]
print(('[%%-%ds]' %50) % "###")
print(('[%%-%ds]' %50) % ("#"*30))
#这时候30,50都是可以被替换掉的,既可以被传参
# “#”的数量是根据百分比来的,例如下载包,用包的现在下载的大小除包的总大小,来得到#的数量
#先定义一个函数,用户自定义[]的宽度 import time
def progress(percent,width = 50):
if percent > 1:
percent =1 # 需要进行判断,否则会出现大于100%的情况
show_t = ('[%%-%ds]' %width) % ("#"*int(width*percent)) #\r 将光标移动到开头
print( '\r%s %d%%' %(show_t,int(100*percent)),end='') current_size = 0
total_size = 102410
while current_size < total_size:
time.sleep(0.1) #需要睡眠,要不然看不到打印的效果,因为速度太快
current_size += 1024
percent = current_size/total_size
progress(current_size/total_size)
python 阿狸的进阶之路(6)的更多相关文章
- python 阿狸的进阶之路(9)
tcp传输: 传输需要ack回应,然后才清空缓存,服务端先起来. tcp流式协议,tcp的Nagle的优化算法,会将时间间隔短,数据量小的打包成一个,然后发送给对方,减少发送的次数. UDP协议: 不 ...
- python 阿狸的进阶之路(5)
一.模块 1.什么是模块: 包含了一组功能的python文件,文件名是xxx.py,模块名是module. 可以使用 import module,四个通用的类别: (1)用python编写的py文件 ...
- day3 python 阿狸的进阶之路
函数概念: 1.为什要有函数 组织结构不清晰,可读性差,代码冗余,可扩展性差. 2.什么是函数 具备某一个功能的工具--->函数 事先准备工具->函数的定义 拿来就用. ...
- python 阿狸的进阶之路(8)
异常处理 http://www.cnblogs.com/linhaifeng/articles/6232220.html(转) 网络编程socket http://www.cnblogs.com/li ...
- python 阿狸的进阶之路(7)
面向对象 转自林海峰的博客 http://www.cnblogs.com/linhaifeng/articles/6182264.html 面向对象的理解: 将数据分类,比如学生类.数据有关的函数, ...
- python 阿狸的进阶之路(4)
装饰器 #1.开放封闭原则:对扩展开放,对修改是封闭#2.装饰器:装饰它人的,器指的是任意可调用对象,现在的场景装饰器->函数,被装饰的对象也是->函数#原则:1.不修改被装饰对象的源代码 ...
- Python 从入门到进阶之路(一)
人生苦短,我用 Python. Python 无疑是目前最火的语言之一,在这里就不再夸他的 NB 之处了,本着对计算机编程的浓厚兴趣,便开始了对 Python 的自学之路,并记录下此学习记录的心酸历程 ...
- Python 从入门到进阶之路(七)
之前的文章我们简单介绍了一下 Python 中异常处理,本篇文章我们来看一下 Python 中 is 和 == 的区别及深拷贝和浅拷贝. 我们先来看一下在 Python 中的双等号 == . == 是 ...
- Python 从入门到进阶之路(六)
之前的文章我们简单介绍了一下 Python 的面向对象,本篇文章我们来看一下 Python 中异常处理. 我们在写程序时,有可能会出现程序报错,但是我们想绕过这个错误执行操作.即使我们的程序写的没问题 ...
随机推荐
- requests 请求几个接口 出现’您的账户在其它设备使用过,为保障安全,需重新登入才能在本设备使用‘
因为接口和接口直接有个字段是关联的 在登陆请求后,后台响应了个token,下面的请求 ,请求头要带上这个token 才认为是登陆后 的操作
- [UE4]Overlay
Overlay容器的子控件叠加,没有z-order属性设置,只能在编辑器中调整前后层级,也不能设置位置.可以理解是Canvas Panel的简化控件
- SCCM2012理论知识详解
- PHP正则配合写配置文件导致Getshell
PHP正则配合写配置文件导致Getshell,偶然间看到的一个题目, p 牛的小密圈的一个问题. 分析一下,漏洞代码: index.php <?php $str=addslashes($_GET ...
- 清除win7桌面背景的图片位置下拉菜单的历史记录
到注册表 清除win7桌面背景的图片位置下拉菜单的历史记录: 开始--->运行--->输入regedit,在弹出的注册表编辑器中,定位到如下位置 HKEY_CURRENT_USER\Sof ...
- JVM调优原理
JVM堆栈 栈是运行时的单位,而堆是存储的单位. 栈解决程序的运行问题,即程序如何执行,或者说如何处理数据:堆解决的是数据存储的问题,即数据怎么放.放在哪儿. 在Java中一个线程就会相应有一个线程栈 ...
- struts Action设置数据的方法
一.属性驱动 注:示例中的实体类没有相应展示出来 1.基本数据类型的属性 基本数据类型的属性指每一个前台提交的属性在后台对应的Action类中都有相应的属性与之相对应 例如:前台表单: <for ...
- CF1133E K Balanced Teams(DP)
/* 排序之后每个点往前能选择的是一段区间, 所以我们实际上转移位置是确定的 然后f[i][j]表示到了i选了j段的最大贡献, 显然状态数是O(n^2)的, 转移是O(1)的 */ #include& ...
- JAVA使用Tess4J进行ocr识别
Tess4J是对Tesseract OCR API.的Java JNA 封装.使java能够通过调用Tess4J的API来使用Tesseract OCR.支持的格式:TIFF,JPEG,GIF,PNG ...
- c# 测试运行时间毫秒级
, , , , , , )).Ticks) / ; /*代码*/ , , , , , , )).Ticks) / ; MessageBox.Show((currentMillis1 - current ...