Python:模块

模块:

模块的实质就是把要导入模块里的代码从上到下一一执行;找模块的顺序是,先从当前模块找,找不到到环境变量里找

加环境变量:

pycharm会自动把当前运行文件和其爷爷目录加入环境变量,如果不手动加环境变量,在pycharm运行不会报错,
但在terminal终端运行时却会报错;
环境变量应加在最终运行的start.py文件里,方法如下:


import sys,os

print(sys.path)  #找环境变量
DATA_BASE=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))         #abspath是获取当前文件的绝对路径,dirname是获取其父目录
sys.path.insert(0,DATA_BASE)                  #或者sys.path.append(DATA_BASE)也行

模块分三种:

1.标准模块:

os ,sys ,time ,random ,getpass等,直接import就能调用

2.自己写的模块:

自己写的python文件,同级目录下调用,直接用import;不同目录下调用,用from,导入单个的函数或变量,导入前把该模块加入到环境变量。

导入模块:

例一:from day4.model import run  #调用day4目录下的model文件的run函数或run变量

例二:from model import run,run1   #调用同级目录下的model模块

例三:from  .   import my   #在当前目录下导入my模块

 

3.第三方模块:

别人写好的模块,在python软件库里,需要安装才能用,调用也是直接import

安装方式第一种:是操作系统命令,不是在python命令行里执行

配置scripts环境变量

  pip install xxx 安装模块

  easy_install xxx 另一种安装命令

  pip list 查看已经安装哪些模块

  pip uninstall xxx  卸载xxx模块

  PS:pip这个模块在python3里是自带的,安装完python就能直接用;但python2里没有这个模块,需要手动安装

安装方式第二种:手动安装

下载安装包例如requests—2.12.3,需要哪个安装包百度搜索就行

解压后,安装setup.py

在解压的目录下,在cmd里执行python setup.py install

标准模块:

random模块

Import random:

print(random.random())#0-1的随机浮点数

print(random.uniform(1,9))#1-9的随机取浮点数,可以指定范围

print(random.randint(1,20))#20以内的随机整数

print(random.randrange(1,20,3))#随机生成20以内间隔为3的随机整数,会从1 4 7 10 13 16 19这里面随机产生

print(random.choice('x23serw4'))#随机取一个字符,括号里是可迭代对象(string、list、turple)

print(random.sample('hello',2))#从序列中string、dic、list、turple随机取2个元素,返回一个list

x = [1,2,3,4,6,7]

random.shuffle(x)#洗牌,打乱顺序,会改变原list的值,只能是list

print(x)

print(string.ascii_letters+string.digits)  #所有的数字和字母

json模块

 

import  json

 

json和字典的格式区别:json用双引号,ture和false的首字母小写,json串就是一个字符串

 

json.loads(s_json)   #括号里传入json串,把json串转成python对应的类型

 

json.load(fr)  #括号里传入文件对象,读文件内容,文件内容要符合json串格式,然后把文件内容转成字典

 

json.dumps(dic)   #,括号里传入python类型,把python转成对应的json串

 

json.dump(dic,fr)   #括号里传入文件对象,把字典转换成json串然后写到一个文件fr里面

下面是摘抄别处,json.dumps  和loads的用法:

使用简单的json.dumps方法对简单数据类型进行编码,例如:

通过输出的结果可以看出,简单类型通过encode之后跟其原始的repr()输出结果非常相似,但是有些数据类型进行了改变,例如上例中的元组则转换为了列表。在json的编码过程中,会存在从python原始类型向json类型的转化过程,具体的转化对照如下:

 

image

json.dumps()方法返回了一个str对象encodedjson,我们接下来在对encodedjson进行decode,得到原始数据,需要使用的json.loads()函数:

loads方法返回了原始的对象,但是仍然发生了一些数据类型的转化。比如,上例中‘abc’转化为了unicode类型。从json到python的类型转化对照如下:

 

image

OS模块

import os

print(os.getcwd())#取当前工作目录

os.chmod("/usr/local",7)#给文件/目录加权限,权限有:7(可读写执行) 4 2 1

print(os.chdir("../"))#更改当前目录,可以写绝对路径,../是回到上级目录

print(os.curdir)#当前目录,打印的是一个点

print(os.pardir)#父目录,打印两个点

print(os.makedirs("/usr/hehe/hehe1"))#递归创建文件夹,父目录不存在时创建父目录,父目录存在时不能创建

print(os.removedirs("/usr/hehe/hehe1"))#递归删除文件夹

print(os.mkdir("test1"))#创建文件夹,只能创建一层目录,父目录存在时创建

print(os.rmdir("test1"))#删除指定的文件夹,只能删除空文件夹

print(os.remove("test"))#删除文件

print(os.listdir('.'))#列出一个目录下的所有文件,结果是一个list

os.rename("test","test1")#重命名文件或文件名,参数传的文件的路径

print(os.stat("len_os.py"))#获取文件信息,文件大小、修改时间等等

print(os.sep)#当前操作系统的路径分隔符,不同的系统分隔符不一样,以后写代码路径可以以它代替

print(os.linesep)#当前操作系统的换行符

print(os.pathsep)#当前系统的环境变量中每个路径的分隔符,linux是:,windows是;

print(os.environ)#当前系统的环境变量sys.path是pyhton自己的,os.environ是整个操作系统的

print(os.name)#当前系统名称

print(__file__)#__file__指当前文件,取当前文件路径

print(os.path.abspath(__file__))#获取绝对路径

print(os.path.split("/usr/hehe/hehe.txt"))#分割路径和文件名

print(os.path.dirname("/usr/local"))#获取父目录,括号里是一个路径

print(os.path.basename("/usr/local"))#获取最后一级,如果是文件显示文件名,如果是目录显示目录名

print(os.path.exists("/usr/local"))#目录/文件是否存在

print(os.path.isabs("."))#判断是否是绝对路径

print(os.path.isfile("/usr/local"))#判断是否是一个文件

print(os.path.isdir("/usr/local"))#是否是一个路径

print(os.path.join("root",'hehe','a.sql'))#拼接成一个路径

print(os.path.getatime("len_os.py"))#输出最近访问时间

print(os.path.getmtime("len_os.py"))#输出最近访问时间

ps:

#system和popen的区别

os.system(‘ipconfig’)  #执行操作系统命令,运行后结果是一大串ip地址和掩码等

print(os.system(‘ipconfig’))  #执行操作系统命令,执行完打印出ip地址和掩码,但print返回的结果是0或1(执行成功是0,失败是1)

os.popen(‘ipconfig’)   #执行操作系统命令,但运行后没有结果

print(os.popen(‘ipconfig’))  #执行操作系统命令,但print返回结果为:<os._wrap_close object at 0x000000000104D8D0>

print(os.popen(‘ipconfig’).read())  #执行操作系统命令,print返回的是一大串ip地址和掩码等

sys模块

import sys

sys.argv命令行参数,返回的是一个List,第一个元素是程序本身路径

sys.exit(n) 退出程序,正常退出时同exit(0),括号里数字代表几秒后退出

sys.version获取Python解释程序的版本信息

sys.maxint当前操作系统支持的最大的Int值

sys.path返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值

sys.platform返回操作系统平台名称

sys.stdout.write('please:')#向屏幕输出一句话

val = sys.stdin.readline()[:-1]#获取输入的值

time&datetime模块

时间有三种表示方式,一种是时间戳、一种是格式化时间(即 2017.6.18 14:30:34这种格式的)、一种是时间元组

import datetime,time        

       print(time.timezone)#和标准时间相差的时间,单位是s

       print(time.time())#获取当前时间戳,时间戳的意思是从unix元年(1970.01.01),到现在的秒数,是一个浮点型,用的话转换成int型 :print(int(time.time()))

       print(time.sleep(1))#休息几s

       print(time.gmtime())#把时间戳转换成时间元组,括号里填时间戳,括号里如果不传的话,默认取标准时区的时间戳

       print(time.localtime())#把时间戳转换成时间元组,如果不传的话,默认取当前时区的时间戳

       print(time.mktime(time.localtime()))#把时间元组转换成时间戳

       print(time.strftime("%Y%m%d %H%M%S"))#将当前时间元组转换成格式化输出的字符串,即取当前时间,括号里的格式可以自定义

       print(time.strptime("20160204 191919","%Y%m%d %H%M%S"))#将格式化的时间转换成时间元组

       print(time.struct_time)#时间元组

       print(time.asctime())#时间元转换成格式化时间

       print(time.ctime())#时间戳转换成格式化时间

       print(datetime.datetime.now())#当然时间格式化输出

       print(datetime.datetime.now()+datetime.timedelta(3))#取3天后的时间

       print(datetime.datetime.now()+datetime.timedelta(-3))#取3天前的时间

例一:将时间戳转成格式化时间的函数

def timestampToStr(timestamp=None,format='%Y%m%d %H%M%S')
if timestamp: 如果传了时间戳
time_tuple=time.localtime(timestamp) 先将时间戳转化为时间元组
return time.striftime(format,time_tuple) 将时间元组转化为格式化时间
return time.strftime(format) 不传时间戳,就取当前时区的时间

例二:将格式化时间转化为时间戳的函数

def strTOTimestamp(format_time=None,format='%Y%m%d %H%M%S')
if format_time:
time_tuple=time.strptime(format_time,format) 将格式化时间转化为时间元组
return int(time.mktime(time_tuple)) 将时间元组传华为时间戳,并转成int类型
return int(time.time()) 不传格式化时间,就取当前时间戳

 

 glob模块

用它可以查找符合特定规则的文件路径名。查找文件只用到三个匹配符:”*”, “?”, “[]”。”*”匹配0个或多个字符;”?”匹配单个字符;”[]”匹配指定范围内的字符,如:[0-9]匹配数字。

1:glob.glob:返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。

import glob

file=glob.glob(r

'C:\Users\EDZ\Desktop\python\py_test\dir_test\*.py'

)

print(type(file))    #类型是list
print(file)  
 

2:glob.glob:获取一个可编历对象,使用它可以逐个获取匹配的文件路径名。与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。

import glob

f=glob.iglob(r

'C:\Users\EDZ\Desktop\python\py_test\dir_test\*.py'

)

print(type(f))    #<class 'generator'>,是一个可循环的对象
for i in f:
  print(i) #循环这个对象,i是每一个匹配的文件路径

 

 
posted @ 2017-07-03 15:51  hesperid  阅读(192)  评论(0编辑  收藏  举报