Python常用模块

Date: 2019-05-27

Author: Sun

本文只列出常见的一些基本模块

1. os模块

os模块就是对操作系统进行操作,使用该模块必须先导入模块:
import os

获取当前路径

import os
os.getcwd()

改变当前路径到C:\Users下

import os
os.chdir("C:\\Users")

os模块常用函数

os.remove() 删除文件 
os.unlink() 删除文件 
os.rename() 重命名文件 
os.listdir() 列出指定目录下所有文件 
os.chdir() 改变当前工作目录
os.getcwd() 获取当前文件路径
os.mkdir() 新建目录
os.rmdir() 删除空目录(删除非空目录, 使用shutil.rmtree())
os.makedirs() 创建多级目录
os.removedirs() 删除多级目录
os.stat(file) 获取文件属性
os.chmod(file) 修改文件权限
os.utime(file) 修改文件时间戳
os.name(file) 获取操作系统标识
os.system() 执行操作系统命令
os.execvp() 启动一个新进程
os.fork() 获取父进程ID,在子进程返回中返回0
os.execvp() 执行外部程序脚本(Uinx)
os.spawn() 执行外部程序脚本(Windows)
os.access(path, mode) 判断文件权限(详细参考cnblogs)
os.wait() 暂时未知
os.path模块:
os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分离)
os.path.splitext(filename) 将文件路径和文件扩展名分割成一个元组
os.path.dirname(filename) 返回文件路径的目录部分
os.path.basename(filename) 返回文件路径的文件名部分
os.path.join(dirname,basename) 将文件路径和文件名凑成完整文件路径
os.path.abspath(name) 获得绝对路径
os.path.splitunc(path) 把路径分割为挂载点和文件名
os.path.normpath(path) 规范path字符串形式
os.path.exists() 判断文件或目录是否存在
os.path.isabs() 如果path是绝对路径,返回True
os.path.realpath(path) #返回path的真实路径
os.path.relpath(path[, start]) #从start开始计算相对路径 
os.path.normcase(path) #转换path的大小写和斜杠
os.path.isdir() 判断name是不是一个目录,name不是目录就返回false
os.path.isfile() 判断name是不是一个文件,不存在返回false
os.path.islink() 判断文件是否连接文件,返回boolean
os.path.ismount() 指定路径是否存在且为一个挂载点,返回boolean
os.path.samefile() 是否相同路径的文件,返回boolean
os.path.getatime() 返回最近访问时间 浮点型
os.path.getmtime() 返回上一次修改时间 浮点型
os.path.getctime() 返回文件创建时间 浮点型
os.path.getsize() 返回文件大小 字节单位
os.path.commonprefix(list) #返回list(多个路径)中,所有path共有的最长的路径
os.path.lexists #路径存在则返回True,路径损坏也返回True
os.path.expanduser(path) #把path中包含的”~”和”~user”转换成用户目录
os.path.expandvars(path) #根据环境变量的值替换path中包含的”$name”和”${name}”
os.path.sameopenfile(fp1, fp2) #判断fp1和fp2是否指向同一文件
os.path.samestat(stat1, stat2) #判断stat tuple stat1和stat2是否指向同一个文件
os.path.splitdrive(path) #一般用在windows下,返回驱动器名和路径组成的元组
os.path.walk(path, visit, arg) #遍历path,给每个path执行一个函数详细见手册
os.path.supports_unicode_filenames() 设置是否支持unicode路径名

2. time模块

time模块提供各种操作时间的函数

说明:一般有两种表示时间的方式:
1.时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的
2.以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同

  • 函数
time() -- 返回时间戳
sleep() -- 延迟运行单位为s
gmtime() -- 转换时间戳为时间元组(时间对象)
localtime() -- 转换时间戳为本地时间对象
asctime() -- 将时间对象转换为字符串
ctime() -- 将时间戳转换为字符串
mktime() -- 将本地时间转换为时间戳
strftime() -- 将时间对象转换为规范性字符串

案例:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

#返回当前时间戳
print(time.time())
#返回当前时间
print(time.ctime())
#将时间戳转换为字符串
print(time.ctime(time.time()-86640))
#本地时间
print(time.localtime(time.time()-86400))
#与time.localtime()功能相反,将struct_time格式转回成时间戳格式
print(time.mktime(time.localtime()))
#将struct_time格式转成指定的字符串格式
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()))
#将字符串格式转换成struct_time格式
print(time.strptime("2016-01-28","%Y-%m-%d"))
#休眠5s
time.sleep(5)

3. datetime模块

定义的类有: 
datetime.date    --表示日期的类。常用的属性有year, month, day
datetime.time    --表示时间的类。常用的属性有hour, minute, second, microsecond

datetime.datetime  --表示日期时间
datetime.timedelta  --表示时间间隔,即两个时间点之间的长度

  • date类

date类表示日期,构造函数如下 :

datetime.date(year, month, day);

year (1-9999)

month (1-12)

day (1-31)

date.today()  --返回一个表示当前本地日期的date对象

date.fromtimestamp(timestamp) --根据给定的时间戮,返回一个date对象

import datetime
#取时间对象的年
print(datetime.date.today().year)
#取时间对象的月
print(datetime.date.today().month)
#取时间对象的日
print(datetime.date.today().day)
#生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性
print(datetime.date.today().replace(2010,6,12))
#返回给定时间的时间元组/对象
print(datetime.date.today().timetuple())
#返回weekday,从0开始
print(datetime.date.today().weekday())
#返回weekday,从1开始
print(datetime.date.today().isoweekday())
#返回给定时间的字符串格式
print(datetime.date.today().ctime())

4. sys模块

用于提供对解释器相关的访问及维护,并有很强的交互功能

常用函数:

sys.argv --传参,第一个参数为脚本名称即argv[0]

sys.path --模块搜索路径

sys.moudule --加载模块字典

sys.stdin  --标准输入

sys.stdout  --标准输出

sys.stderr  --错误输出

sys.platform --返回系统平台名称

sys.version  --查看python版本

sys.maxsize  --最大的Int值

# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 18:35'


#!/usr/bin/env python
# -*- coding:utf-8 -*-
#传参
import sys

print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])


##运行
python argv.py argv0 argv1
argv.py
argv0
argv1

5. pickle模块

pickle,用于python特有的类型 和 python的数据类型间进行转换

pickle模块提供了四个功能:dumps、dump、loads、load

常用函数:

pickle.dumps(obj)--把任意对象序列化成一个str,然后,把这个str写入文件
pickle.loads(string)  --反序列化出对象
pickle.dump(obj,file)  --直接把对象序列化后写入文件
pickle.load(file)  --从文件中反序列化出对象

案例:

  1. 将字典数据保存序列化到accounts.db文件中。
  2. 反序列出对象并修改其内容,并将修改内容重新写入文件
  3. 反序列化对象并查看其内容
# -*- coding: utf-8 -*-
__author__ = 'sun'
__date__ = '2019/5/27 18:35'

import pickle
accounts = {
    1000: {
        'name':'liudehua',
        'email': 'dehua@126.com',
        'passwd': 'abc123',
        'balance': 15000,
        'phone': 11112121,
        'bank_acc':{
            'ICBC':14324234,
            'CBC' : 235234,
            'ABC' : 35235423
        }
    },
    1001: {
        'name': 'xueyou',
        'email': 'xueyou@126.com',
        'passwd': 'abc145323',
        'balance': -15000,
        'phone': 1345635345,
        'bank_acc': {
            'ICBC': 4334343,
        }
    },
}
#把字典类型写入到文件中
f = open('accounts.db','wb')
f.write(pickle.dumps(accounts))
f.close()

#2,反序列出对象并修改其内容,并将修改内容重新写入文件
file_name = "accounts.db"
f = open(file_name,'rb')
account_dic = pickle.loads(f.read())
f.close()

account_dic[1000]['balance'] -= 500
f = open(file_name,'wb')
f.write(pickle.dumps(account_dic))
f.close()


#3,反序列化对象并查看其内容

f = open('accounts.db','rb')
acountdb = pickle.loads(f.read())
print(acountdb)

6. random模块

用于生成随机数

  1. random.random()

用于生成一个0到1的

随机浮点数:0<= n < 1.0

  1. random.uniform(a,b)

​ 用于生成一个指定范围内的随机浮点数,两个参数其中一个是上限,一个是下限。如果a > b,则生成的随机数n: a <= n <= b。如果 a <b, 则 b <= n <= a。

import random  
print(random.uniform(1,10))  
print(random.uniform(10,1)) 

3.random.randint(a, b)

#用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b

import random  
print(random.randint(1,10))  

4.random.randrange([start], stop[, step])

#从指定范围内,按指定基数递增的集合中 获取一个随机数。

random.randrange(10, 30, 2),结果相当于从[10, 12, 14, 16, ... 26, 28]序列中获取一个随机数。

import random  
print(random.randrange(10,30,2)) 

5.random.choice(sequence)

random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。

参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。

import random  
lst = ['python','C','C++','javascript']  
str1 = ('I love python')  
print(random.choice(lst))
print(random.choice(str1))  

时间模块

datetime:日期

time :时间

calendar:日历

时间间隔是以秒为单位的

时间戳:当前时间距离1970.1.1的秒数

1 time模块

UTC:格林威治天文时间,世界标准时间,在中国UTC+8
DST:夏令时
时间的表示形式:
	a.以整数或者浮点数表示一个以秒为单位的时间间隔,这个时间的基础值1970.1.1的零时零分零秒
	b.采用Python中的数据结构表示,采用元组,元组中可以有9个不同的元素,表示不同的含义
	c.格式化的时间字符串

#示例
import time

#1.获取当前时间戳
t = time.time()  #1527506380.6267307
print(t)

#2.将时间戳转换为元组
tup = time.gmtime(t)
print(tup)

#3.获取本地时间的时间元组
local = time.localtime()
print(local)

#4.将元组转为时间戳
t1 = time.mktime(tup)
print(t1)

#5.格式化时间  元组=>字符串
print(time.strftime('%Y-%m-%d %H:%M:%S',tup))
print(time.strftime('%Y-%m-%d',local))

#6.时间字符串转元组
print(time.strptime('2018-5-28','%Y-%m-%d'))

#7.系统休眠
# print('**************')
# time.sleep(3)
# print('--------------')

#8.计算应用耗时
def test():
    sum = 0
    print('计算开始')
    for x in range(10000000):
        sum += x
    print('计算结束')
st = time.clock()  #开始时间
test()
end = time.clock() #结束时间
print(end - st)

#9.一年中的第几天
print(time.strftime('%j',time.localtime()))

2 datetime模块

datetime比time更加高级。是对time进行了封装

from _datetime import datetime

#1.获取当前时间
d = datetime.now()
dd = datetime.today()
print(d,dd,type(d))

#2.获取指定时间
dt = datetime(2018,5,28,20,15,49,0)
print(dt)

#3 获取日期和时间
print(dt.date())
print(dt.time())

#4.转换为日期字符串
print(dt.strftime('%Y-%m-%d'))

#5.转换为元组
print(dt.timetuple())

print(dt.toordinal())
seconds = dt.timestamp()
print(seconds)

#6 时间差
d6 = datetime(2018,4,2,10,56,00,3623)
d7 = datetime(2018,4,5,10,56,32,3623)
d8 = d7 - d6
print(d8)  #3 days, 0:00:00
print(d8.days)   #3

#整数天之外的秒数
print(d8.seconds)

3 calendar模块

主要用于获取日历的相信信息

import  calendar

#1.直接返回指定年和月的万年历表示形式
print(calendar.month(2018,4))    #********


#2.返回万年历的二维列表表示形式
print(calendar.monthcalendar(2018,4))

#3.直接返回指定年份的万年历表示形式
print(calendar.calendar(2018))   #********

#4.判断某年是否为闰年
print(calendar.isleap(2010))   #********
print(calendar.leapdays(2000,2020))   #********

#5.返回指定月的weekday的第一天和这个月的所有的天数
print(calendar.monthrange(2018,4))  #(6, 30)---》(当月开始的第一天为星期几,mon为0,第二个元素表示当月的总天数)

print(calendar.monthcalendar(2018,4))

#当前日期表示的星期数
print(calendar.weekday(2018,4,2))   #********

第三方模块

步骤:

1.在终端中输入命令:pip -V 【检查版本,这个步骤在安装Python环境的时候如果勾选了Add path选项,则已自动安装】

2.安装第三方模块:pip install pillow 【pillow为一个图形处理的第三方模块,需要联网下载】

​ 如果此步出错,则执行命令pip install --upgrade pip

  1. 如果不使用第三方模块,则可以执行命令:pip uninstall pillow ,卸载第三方模块

如果安装后pycharm找不到模块,可以在pycharm-->file->settings->project xxx->project interpreter ,在右侧窗口点击“+”,安装一下pillow就可以了

原文地址:https://www.cnblogs.com/sunBinary/p/10934277.html