包与常用模块:time,sys。
一 包的初识:
首先包在pycharm中的表现形式为packa文件夹:在python3种那么我们创建一个packa时会发现下边会自动跟一个—init—.py文件
包的定义:包就是一个包含有——init——.py文件的文件夹,所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来。
注意:
1)在python3种,即使包下面没有——init——.py文件,import包仍然不会报错,而且还可以自己创建该文件,在python2种一定要有这个个文件。
2)创建包的目的不是为了运行,而是供被导入使用,包只是一种形式而已,它的本质还是一种模快。
2 包的使用:
在使用包之前我们先说下为什么要用包,包的本质就是一个文件夹,准确来说是一个自带有——init——.py文件的文件夹,那么随着我们功能越来越多,我们不可能将所有的功能都放到一个文件里面去,所以我们创建文件夹来将文件组织起来,来提高程序的结构性,更便于维护。
导入注意事项:
1)对于包的导入也可以用import和from。。。import。。。但是包的导入时凡是导入时带点的点的左边必须是一个包,这是导入包特有的语法,而且import后面必须跟一个明确的名字不能带点(...)。
2)导入后使用的过程就没有这种规定了。
3)对于包内部模块的直接导入应该使用from。。。import。。。
4)import导入文件时,产生名称空间中的名字来源于import包,产生的名称空间的名字来源于文件,即包下的——init——.py文件,导入包的本质就是导入该文件。
from aaa import bbb#在同一个包下相互调用,
print(bbb.func2)
res=bbb.func2
res()
print(bbb.x)
import aaa
from aaa import ccc#调用ccc实际上就是调用ccc下的——init--
res=aaa.ccc.f
res1=aaa.ccc.ccc
res()
print(res)
print(res1)
print(ccc)#我们可以看出输出的结果为ccc下的__init__.py文件的路径,也就是说我们调用ccc其实就是在调用ccc下的init from aaa import bbb
bbb.func2()
print(bbb.x)
执行文件
文件bbb def func2():
print('from aaa.bbb.func2') x= 文件init # import bbb def func():
print('aaa.init')
二:模块
1 time与datetime模块
2 python中三种时间表示:
1)时间戳(timestamp):通常来说,时间戳表示的是1970年1月1日00:00:00开始计算的时间偏移量。我们运行type(time.time())返回的是float类型。 2)格式化的时间字符串(format string)
3)结构化的时间(struct—time):元素共含有九个元素:(年,月 ,日 ,时, 分, 秒,一年中的第几周,一年中的第几天,夏令时)
3 格式化字符串时间格式:
4 三种格式之间的转换:
那么我们为什么要那么复杂的将时间分格式呢,因为计算机只能识别时间戳,而程序员只能识别结构化的时间或格式化的字符串时间。
那么根据上图一些转换关系:
#--------------------------按图1转换时间
# localtime([secs])
# 将一个时间戳转换为当前时区的struct_time。secs参数未提供,则以当前时间为准。
time.localtime()
time.localtime(1473525444.037215) # gmtime([secs]) 和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time。 # mktime(t) : 将一个struct_time转化为时间戳。
print(time.mktime(time.localtime()))#1473525749.0 # strftime(format[, t]) : 把一个代表时间的元组或者struct_time(如由time.localtime()和
# time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个
# 元素越界,ValueError的错误将会被抛出。
print(time.strftime("%Y-%m-%d %X", time.localtime()))#-- :: # time.strptime(string[, format])
# 把一个格式化时间字符串转化为struct_time。实际上它和strftime()是逆操作。
print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))
#time.struct_time(tm_year=, tm_mon=, tm_mday=, tm_hour=, tm_min=, tm_sec=,
# tm_wday=, tm_yday=, tm_isdst=-)
#在这个函数中,format默认为:"%a %b %d %H:%M:%S %Y"。
复制代码
时间格式转化关系
5 datetime模块主要的应用:
#时间加减
import datetime # print(datetime.datetime.now()) #返回 -- ::03.941925
#print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 --
# print(datetime.datetime.now() )
# print(datetime.datetime.now() + datetime.timedelta()) #当前时间+3天
# print(datetime.datetime.now() + datetime.timedelta(-)) #当前时间-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=)) #当前时间+3小时
# print(datetime.datetime.now() + datetime.timedelta(minutes=)) #当前时间+30分 #
# c_time = datetime.datetime.now()
# print(c_time.replace(minute=,hour=)) #时间替换
复制代码
datetime
其实我们一般应用datetime模块更多,因为他更方便实用。
我们可以直接导入datetime模块输出我们想要的时间格式:2018-04-08 15:17:27.377304
import datetime
print(datetime.datetime.now())
6 random模块
random一些常用功能:
import random print(random.random())#(,)----float 大于0且小于1之间的小数 print(random.randint(,)) #[,] 大于等于1且小于等于3之间的整数 print(random.randrange(,)) #[,) 大于等于1且小于3之间的整数 print(random.choice([,'',[,]]))#1或者23或者[,] print(random.sample([,'',[,]],))#列表元素任意2个组合 print(random.uniform(,))#大于1小于3的小数,如1. item=[,,,,]
random.shuffle(item) #打乱item的顺序,相当于"洗牌"
print(item)
随机生成验证码:实际应用小模块。
import random
def make_code(n):
res=''
for i in range(n):
s1=chr(random.randint(,))
s2=str(random.randint(,))
res+=random.choice([s1,s2])
return res print(make_code())
7 sys模块
sys模块常用功能:
sys.argv 命令行参数List,第一个元素是程序本身路径
2 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
使用sys与time模块实现打印进度条:
8 shutil模块
主要对文件和文件夹进行copy,压缩等操作。
1)文件copy:
shutil.copyfileobj(fsrc(源文件),fdst[,length])
将文件内容拷贝到另一个文件中
1 import shutil
2 shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))
拷贝文件
1 shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在
shutil.copymode(src, dst)
仅拷贝权限。内容、组、用户均不变
1 shutil.copymode('f1.log', 'f2.log') #目标文件必须存在
shutil.copystat(src, dst)
仅拷贝状态的信息,包括:mode bits, atime, mtime, flags
1 shutil.copystat('f1.log', 'f2.log') #目标文件必须存在
关于使用shutil来进行文件的压缩与解压:
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 下的文件打包放置当前程序目录
import shutil
ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data') #将 /data下的文件打包放置 /tmp/目录
import shutil
ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data') shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细: import zipfile # 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close() # 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall(path='.')
z.close() import tarfile # 压缩
>>> t=tarfile.open('/tmp/egon.tar','w')
>>> t.add('/test1/a.py',arcname='a.bak')
>>> t.add('/test1/b.py',arcname='b.bak')
>>> t.close() # 解压
>>> t=tarfile.open('/tmp/egon.tar','r')
>>> t.extractall('/egon')
>>> t.close()
复制代码
V文件压缩与解压
包与常用模块:time,sys。的更多相关文章
- Python常用模块之sys
Python常用模块之sys sys模块提供了一系列有关Python运行环境的变量和函数. 常见用法 sys.argv 可以用sys.argv获取当前正在执行的命令行参数的参数列表(list). 变量 ...
- python常用模块之sys模块
python常用模块之sys模块 1.sys.argv[]:命令行参数List,第一个元素是程序本身 # 写一个简单的python程序,代码如下: #!/usr/bin/python #coding= ...
- 模块、包及常用模块(time/random/os/sys/shutil)
一.模块 模块的本质就是一个.py 文件. 导入和调用模块: import module from module import xx from module.xx.xx import xx as re ...
- 包及常用模块(time、datetime、random、sys)
什么是包?‘ #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module nam ...
- Python【第五篇】模块、包、常用模块
一.模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
- python模块部分----模块、包、常用模块
0.来源:https://www.cnblogs.com/jin-xin/articles/9987155.html 1.导入模块 1.1模块就是一个python文件,模块名是文件名 1.2导入模块的 ...
- python - 常用模块 os, sys
常用模块: os(处理文件和目录), sys(sys 模块包含了与 Python 解释器和它的环境有关的函数.) sys.argv 变量是一个字符串的 列表.特别地,sys.argv 包含了 命令行参 ...
- Day06:迭代器,生成器,生成表达式,面向过程编程,包及常用模块
今日内容:1.迭代器(****)2.生成器(***)3.生成器表达式(*****)4.面向过程编程(*****)5.包的使用(***)6.常用模块 logging (*****) re ( ...
- python常用模块:sys、os、path、setting、random、shutil
今日内容讲了3个常用模块 一.sys模块二.os模块三.os下path模块四.random模块五.shutil模块 一.sys模块 import sys #环境变量 print(sys.path) # ...
随机推荐
- magento常见的问题及解决方法
刚接触magento时,会遇到很多问题,大多数都是些magento配置及操作上的问题,因为刚接触magento不久所有对这些问题比较陌生也不知道如何处理.今日根据模版堂技术指导下和网上的相关例子,这里 ...
- php中弱语言类型的底层实现
PHP是弱语言类型,主要分为三类: 1.标量类型:integer.string.float.boolean 2.复合类型:array.object 3.特殊类型:resource.null php是通 ...
- 利用WebApplicationInitializer配置SpringMVC取代web.xml
对于Spring MVC的DispatcherServlet配置方式,传统的是基于XML方式的,也就是官方说明的XML-based,如下: <servlet> <servlet-na ...
- Mac无法上网
今天mac突然无法上网了, 家里的大部分设备, 都出现了重启后无法上网的问题, 猜测可能是dns有问题了. 于是乎, 在mac中添加了如下DNS 114.114.114.114 8.8.8.8 1.1 ...
- 【spring data jpa】好文储备
[spring data jpa]带有条件的查询后分页和不带条件查询后分页实现 : https://blog.csdn.net/lihuapiao/article/details/48782843 ...
- CH3602 Counting Swaps
题意 3602 Counting Swaps 0x30「数学知识」例题 背景 https://ipsc.ksp.sk/2016/real/problems/c.html Just like yeste ...
- MySQL--REPLACE INTO更新自增列值引发的异常
##=====================================================================##测试环境:MySQL版本:MySQL 5.7.19复制 ...
- MySQL Disk--SSD 特性
======================================================================= SSD 特性 .随机读能力非常好,连续读性能一般,但比普 ...
- RAC4——架构和变化
1.RAC的架构 2.由单实例变RAC的变化 1.SGA的变化: 和传统的单实例相比,RAC 实例中SGA最显著的变化时多了一个GRD(Global resource directory)部分. ...
- vue-router 知识点
vue-router配置scrollBehavior 第三个参数 savedPosition 当且仅当 popstate 导航 (通过浏览器的 前进/后退 按钮触发) 时才可用. 注意: 这个功能只在 ...