一  包的初识:

首先包在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文件压缩与解压


最新文章

  1. JavaScript第一节课
  2. vue-loader配合webpack的使用及安装
  3. Android Fragment (二) 实例1
  4. 转:Configure your eclipse for C++
  5. 夺命雷公狗-----React---2--组建
  6. cookies,sessionStorage和localStorage的区别
  7. 关于java中super()和this()
  8. 软件工程课程作业(二)--四则运算2改进版(c++)
  9. JS的文本编辑框jwysiwyg-0.6
  10. Struts2.1.8 + Spring3.0+ Hibernate3.2整合笔记
  11. win10 uwp 存放网络图片到本地
  12. Latex 仅使用 hyperref 包中 \href 的方法
  13. redis 安装启动
  14. java字符流操作flush()方法及其注意事项
  15. php生成xml数据
  16. 【托业】【新托业TOEIC新题型真题】学习笔记8-题库五->P7
  17. kettle之时间字段默认值为空或’0000-00-00’问题
  18. TCP协议的特点
  19. [17] 楼梯(Stairs)图形的生成算法
  20. zookeeper 简单小节

热门文章

  1. 升级 macOS Mojave 后部分软件 (如 VS Code) 字体变虚的解决方法
  2. lintcode 刷题 by python 总结(1)
  3. 【linux基础】ubuntu如何查看linux的内核版本和系统版本
  4. 51Nod:活动安排问题之二(贪心)
  5. 【矩阵快速幂】【杭电OJ1757】
  6. c++hook全局触控事件
  7. python list 的查找, 搜索, 定位, 统计
  8. Git常用有用命令
  9. 来自官方的一些dbt 最佳实践
  10. uml建模工具介绍