前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 常用模块

python 常用模块

原创
作者头像
ruochen
修改2021-05-12 09:59:09
1.1K0
修改2021-05-12 09:59:09
举报
文章被收录于专栏:若尘的技术专栏

常用模块

  • calendar
  • time
  • datetime
  • timeit
  • os
  • shutil
  • zip
  • math
  • string
  • 上述所有模块使用理论上都应该先导入,string是特例
  • calendar,time,datetime的区别参考中文意思

calendar

  • 跟日历相关的模块
代码语言:txt
复制
# 使用需要先导入
import calendar
代码语言:txt
复制
# calendar:获取一年的日历字符串
# 参数
# w = 每个日期之间的间隔字符数
# l = 每周所占用的行数
# c = 每个月之间的间隔字符数
cal = calendar.calendar(2017)
print(type(cal))
代码语言:txt
复制
<class 'str'>
代码语言:txt
复制
cal = calendar.calendar(2017, l=0, c=5)
print(cal)
代码语言:txt
复制
                                 2017
代码语言:txt
复制
      January                  February                  March
代码语言:txt
复制
Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su
代码语言:txt
复制
                   1            1  2  3  4  5            1  2  3  4  5
代码语言:txt
复制
 2  3  4  5  6  7  8      6  7  8  9 10 11 12      6  7  8  9 10 11 12
代码语言:txt
复制
 9 10 11 12 13 14 15     13 14 15 16 17 18 19     13 14 15 16 17 18 19
代码语言:txt
复制
16 17 18 19 20 21 22     20 21 22 23 24 25 26     20 21 22 23 24 25 26
代码语言:txt
复制
23 24 25 26 27 28 29     27 28                    27 28 29 30 31
代码语言:txt
复制
30 31
代码语言:txt
复制
       April                     May                      June
代码语言:txt
复制
Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su
代码语言:txt
复制
                1  2      1  2  3  4  5  6  7               1  2  3  4
代码语言:txt
复制
 3  4  5  6  7  8  9      8  9 10 11 12 13 14      5  6  7  8  9 10 11
代码语言:txt
复制
10 11 12 13 14 15 16     15 16 17 18 19 20 21     12 13 14 15 16 17 18
代码语言:txt
复制
17 18 19 20 21 22 23     22 23 24 25 26 27 28     19 20 21 22 23 24 25
代码语言:txt
复制
24 25 26 27 28 29 30     29 30 31                 26 27 28 29 30
代码语言:txt
复制
        July                    August                 September
代码语言:txt
复制
Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su
代码语言:txt
复制
                1  2         1  2  3  4  5  6                  1  2  3
代码语言:txt
复制
 3  4  5  6  7  8  9      7  8  9 10 11 12 13      4  5  6  7  8  9 10
代码语言:txt
复制
10 11 12 13 14 15 16     14 15 16 17 18 19 20     11 12 13 14 15 16 17
代码语言:txt
复制
17 18 19 20 21 22 23     21 22 23 24 25 26 27     18 19 20 21 22 23 24
代码语言:txt
复制
24 25 26 27 28 29 30     28 29 30 31              25 26 27 28 29 30
代码语言:txt
复制
31
代码语言:txt
复制
      October                  November                 December
代码语言:txt
复制
Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su     Mo Tu We Th Fr Sa Su
代码语言:txt
复制
                   1            1  2  3  4  5                  1  2  3
代码语言:txt
复制
 2  3  4  5  6  7  8      6  7  8  9 10 11 12      4  5  6  7  8  9 10
代码语言:txt
复制
 9 10 11 12 13 14 15     13 14 15 16 17 18 19     11 12 13 14 15 16 17
代码语言:txt
复制
16 17 18 19 20 21 22     20 21 22 23 24 25 26     18 19 20 21 22 23 24
代码语言:txt
复制
23 24 25 26 27 28 29     27 28 29 30              25 26 27 28 29 30 31
代码语言:txt
复制
30 31
代码语言:txt
复制
# isleap: 判断某一年是否闰年
calendar.isleap(2000)
代码语言:txt
复制
True
代码语言:txt
复制
# leapdays: 获取指定年份之间的闰年的个数
calendar.leapdays(2018, 1998)
代码语言:txt
复制
-5
代码语言:txt
复制
help(calendar.leapdays)
代码语言:txt
复制
Help on function leapdays in module calendar:
代码语言:txt
复制
leapdays(y1, y2)
代码语言:txt
复制
    Return number of leap years in range [y1, y2).
代码语言:txt
复制
    Assume y1 <= y2.
代码语言:txt
复制
# month()获取某个月的日历字符串
# 格式:calendar.month(年,月)
# 返回值:月日历的字符串
m3 = calendar.month(2018, 3)
print(m3)
代码语言:txt
复制
     March 2018
代码语言:txt
复制
Mo Tu We Th Fr Sa Su
代码语言:txt
复制
          1  2  3  4
代码语言:txt
复制
 5  6  7  8  9 10 11
代码语言:txt
复制
12 13 14 15 16 17 18
代码语言:txt
复制
19 20 21 22 23 24 25
代码语言:txt
复制
26 27 28 29 30 31
代码语言:txt
复制
# monthrange()  获取一个月的周几开始即和天数
# 格式:calendar.monthrange(年,月)
# 返回值:元组(周几开始,总天数)
# 注意:周默认 0 - 6 表示周一到周天
w,t = calendar.monthrange(2018, 3)
print(w)
print(t)
代码语言:txt
复制
3
代码语言:txt
复制
31
代码语言:txt
复制
# monthcalendar() 返回一个月每天的矩阵列表
# 格式:calendar.monthcalendar(年,月)
# 返回值:二级列表
# 注意:矩阵中没有天数用0表示
m = calendar.monthcalendar(2018, 3)
print(type(m))
print(m)
代码语言:txt
复制
<class 'list'>
代码语言:txt
复制
[[0, 0, 0, 1, 2, 3, 4], [5, 6, 7, 8, 9, 10, 11], [12, 13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24, 25], [26, 27, 28, 29, 30, 31, 0]]
代码语言:txt
复制
# prcal: print calendar 直接打印日历
# calendar.prcal(2018)
help(calendar.prcal)
代码语言:txt
复制
Help on method pryear in module calendar:
代码语言:txt
复制
pryear(theyear, w=0, l=0, c=6, m=3) method of calendar.TextCalendar instance
代码语言:txt
复制
    Print a year's calendar.
代码语言:txt
复制
# prmonth()  直接打印整个月的日历
# 格式:calendar.prmonth(年,月)
# 返回值:无
calendar.prmonth(2018, 3)
代码语言:txt
复制
     March 2018
代码语言:txt
复制
Mo Tu We Th Fr Sa Su
代码语言:txt
复制
          1  2  3  4
代码语言:txt
复制
 5  6  7  8  9 10 11
代码语言:txt
复制
12 13 14 15 16 17 18
代码语言:txt
复制
19 20 21 22 23 24 25
代码语言:txt
复制
26 27 28 29 30 31
代码语言:txt
复制
# weekend() 获取周几
# 格式:calendar.weekday(年,月,日)
# 返回值:周几对应的数字
calendar.weekday(2018, 3, 26)
代码语言:txt
复制
0

time模块

时间戳

代码语言:txt
复制
- 一个时间表示,根据不同语言,可以是整数或者浮点数
- 是从1970年1月1日0时0分0秒到现在经历的秒数
- 如果表示的时间是1970年以前或者太遥远的未来,可能出现异常
- 32为操作系统能够支持到2038年UTC时间- UTC时间又称为世界协调时间,以英国的格林尼治天文所在地区的时间作为参考的时间,也叫做世界标准时间
- 中国时间是 UTC+8 东八区

夏令时

代码语言:txt
复制
- 夏令时就是在夏天的时候将时间调快一小时,本意是督促大家早睡早起节省蜡烛!每天变成25个小时,本质没变还是24小时

时间元组

代码语言:txt
复制
- 一个包含时间内容的普通元组
代码语言:txt
复制
    索引    内容    属性      值
代码语言:txt
复制
    0       年      tm_year   2015
代码语言:txt
复制
    1       月      tm_mon    1-12
代码语言:txt
复制
    2       日      tm_mday   1-31
代码语言:txt
复制
    3       时      tm_hour   0-23
代码语言:txt
复制
    4       分      tm_min    0-59
代码语言:txt
复制
    5       秒      tm_sec    0-61    60表示闰秒   61保留值
代码语言:txt
复制
    6       周几    tm_wday   0-6
代码语言:txt
复制
    7       第几天  tm_yday   1-356
代码语言:txt
复制
    8       夏令时  tm_isdst  0, 1, -1 (表示夏令时)
代码语言:txt
复制
# 需要单独导入
import time
代码语言:txt
复制
# 时间模块的属性
# timezone: 当前时区和UTC时间相差的秒数,在没有夏令时的情况下的间隔, 东八区的是 -28800
# altzone:获取当前时区与UTC时间相差的秒数,在有夏令时的情况下
# daylight: 测当前是否是夏令时时间状态,0 表示是
print(time.timezone)
print(time.altzone)
print(time.daylight)
代码语言:txt
复制
-28800
代码语言:txt
复制
-32400
代码语言:txt
复制
0
代码语言:txt
复制
# 得到时间戳
time.time()
代码语言:txt
复制
1559093589.7142274
代码语言:txt
复制
# localtime, 得到当前时间的时间结构
# 可以通过点号操作浮得到相应的属性元素的内容
t = time.localtime()
print(t.tm_hour)
代码语言:txt
复制
9
代码语言:txt
复制
# asctime() 返回元组的正常字符串化之后的时间格式
# 格式:time.asctime(时间元组)
# 返回值:字符串 Tue Jun 6 11:11:00 2017
t = time.localtime()
tt = time.asctime(t)
print(type(tt))
print(tt)
代码语言:txt
复制
<class 'str'>
代码语言:txt
复制
Wed May 29 09:33:10 2019
代码语言:txt
复制
# ctime: 获取字符串化的当前时间
t = time.ctime()
print(type(t))
print(t)
代码语言:txt
复制
<class 'str'>
代码语言:txt
复制
Wed May 29 09:33:13 2019
代码语言:txt
复制
# mktime() 使用时间元组获取对应的时间戳
# 格式:time.mktime(时间元组)
# 返回值:浮点数时间戳

lt = time.localtime()
ts = time.mktime(lt)
print(type(ts))
print(ts)
代码语言:txt
复制
<class 'float'>
代码语言:txt
复制
1559093593.0
代码语言:txt
复制
# clock: 获取cpu时间,3.0-3.3版本直接使用,3.6调用有问题
代码语言:txt
复制
# sleep:使程序进入睡眠,n秒后继续

for i in range(10):
    print(i)
    time.sleep(1)
代码语言:txt
复制
0
代码语言:txt
复制
1
代码语言:txt
复制
2
代码语言:txt
复制
3
代码语言:txt
复制
4
代码语言:txt
复制
5
代码语言:txt
复制
6
代码语言:txt
复制
7
代码语言:txt
复制
8
代码语言:txt
复制
9
代码语言:txt
复制
def p():
    time.sleep(2.5)
    
t0 = time.clock()
p()
t1 = time.clock()

print(t1 - t0)
代码语言:txt
复制
D:\Anaconda3\lib\site-packages\ipykernel_launcher.py:4: DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
代码语言:txt
复制
  after removing the cwd from sys.path.
代码语言:txt
复制
2.4999100289999205
代码语言:txt
复制
D:\Anaconda3\lib\site-packages\ipykernel_launcher.py:6: DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
代码语言:txt
复制
# strftime: 将时间转化为自定义的字符串格式
'''
格式   含义   备注
%a  本地(locale)简化星期名称
%A  本地完整星期名称
%b  本地简化月份名称
%B  本地完整月份名称
%c  本地相应的日期和时间表示
%d  一个月中的第几天(01 - 31)
%H  一天中的第几个小时(24小时制,00 - 23)
%I  一天中的第几个小时(12小时制,01 - 12)
%j  一天中的第几天(001 - 366)
%m  月份(01 - 12)
%M  分钟数(00 - 59)
%p  本地 am 或者 pm的相应符   注1
%S  秒(01 - 61)   注2
%U  一年中的星期数(00 - 53 星期天是一个星期的开始)第一个星期天之前的所有天数都放在
%w  一个星期中的第几天(0 - 6,0是星期天)   注3
%W  和 %U 基本相同,不同的是 %W 以星期一为一个星期的开始
%x  本地相应日期
%X  本地相应时间
%y  去掉世纪的年份(00 - 99)
%Y  完整的年份
%z  用 +HHMM 或 -HHMM 表示距离格林威治的时区偏移(H 代表十进制的小时数,M 代表)
%%  %号本身
'''
# 把时间表示成: 2018-3-26 21:05
t = time.localtime()
ft = time.strftime("%Y-%m-%d %H:%M", t)
print(ft)
代码语言:txt
复制
2019-05-29 09:37

datetime模块

  • datetime提供日期和时间的运算和表示
代码语言:txt
复制
import datetime
代码语言:txt
复制
# datetime常见属性
# datetime.date: 一个理想和的日期,提供year,month,day属性
dt = datetime.date(2018, 3,26)
print(dt)
print(dt.day)
print(dt.year)
print(dt.month)
# datetime.time: 提供一个理想和的时间,具有hour, minute, microsec等内容
# datetime.datetime: 提供日期跟时间的组合
# datetime.timedelta: 提供一个时间差,时间长度
代码语言:txt
复制
2018-03-26
代码语言:txt
复制
26
代码语言:txt
复制
2018
代码语言:txt
复制
3
代码语言:txt
复制
# datetime.datetime
from datetime import datetime
# 常用类方法:
# today:
# now: 
# utcnow:
# fromtimestamp: 从时间戳中返回本地时间
dt = datetime(2018, 3, 26)
print(dt.today())
print(dt.now())

print(dt.fromtimestamp(time.time()))
代码语言:txt
复制
2019-05-29 09:48:48.809508
代码语言:txt
复制
2019-05-29 09:48:48.809508
代码语言:txt
复制
2019-05-29 09:48:48.809508
代码语言:txt
复制
# datetime.timedelta
# 表示一个时间间隔

from datetime import datetime, timedelta

t1 = datetime.now()
print(t1.strftime("%Y-%m-%d %H:%M:%S"))
# td表示一小时的时间长度
td = timedelta(hours=1)
# 当前时间加上时间间隔后,把得到的一个小时后的时间格式化输出
print((t1+td).strftime("%Y-%m-%d %H:%M:%S"))
代码语言:txt
复制
2019-05-29 09:53:39
代码语言:txt
复制
2019-05-29 10:53:39
代码语言:txt
复制
# timeit-时间测量工具

# 测量程序运行时间间隔实验
def p():
    time.sleep(3.6)
    
t1 = time.time()
p()
print(time.time() - t1)
代码语言:txt
复制
3.600494384765625
代码语言:txt
复制
import timeit
# 生成列表两种方法的比较
# 如果单纯比较生成一个列表的时间,可能很难实现
c = '''
sum = []
for i in range(1000):
    sum.append(i)
'''

# 利用timeit调用代码,执行100000次,查看运行时间
t = timeit.timeit(stmt="[i for i in range(1000)]", number=10000)
# 测量代码c执行100000次运行结果
t2 = timeit.timeit(stmt=c, number=100000)
print(t1)
print(t2)
代码语言:txt
复制
1559094978.98862
代码语言:txt
复制
6.657718261000355
代码语言:txt
复制
# timeit 可以执行一个函数,来测量一个函数的执行时间
def doIt():
    num = 3
    for i in range(num):
        print("Repeat for{0}".format(i))
        
# 执行函数,重复10次        
t = timeit.timeit(stmt=doIt, number=10)
print(t)
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
0.0005245219999778783
代码语言:txt
复制
s = '''
def doIt(num):
    for i in range(num):
        print("Repeat for{0}".format(i))
'''
# 执行doIt(num)
# setup负责把环境变量准备好
# 实际上相当于给timeit创造了一个小环境
# 在创作的小环境中,代码执行的顺序大致是
#
'''
def doIt(num):
    ... ...

num = 3
doIt(num)
'''
t = timeit.timeit("doIt(num)", setup=s+"num=3",number=10)
print(t)
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
Repeat for0
代码语言:txt
复制
Repeat for1
代码语言:txt
复制
Repeat for2
代码语言:txt
复制
0.0016783770001893572

datetime.datetime 模块

  • 提供比较好用的时间而已
  • 类定义
代码语言:txt
复制
    class datetime.datetime(year, month, day[, hour
代码语言:txt
复制
            [, minute
代码语言:txt
复制
            [, second
代码语言:txt
复制
            [, microsecond
代码语言:txt
复制
            [, tzinfo]]]]])
代码语言:txt
复制
    # The year, month and day arguments are required.
代码语言:txt
复制
    MINYEAR <= year <= MAXYEAR
代码语言:txt
复制
    1 <= month <= 12
代码语言:txt
复制
    1 <= day <= n
代码语言:txt
复制
    0 <= hour < 24
代码语言:txt
复制
    0 <= mintue < 60
代码语言:txt
复制
    0 <= second < 60
代码语言:txt
复制
    0 <= microsecond < 10**
  • 类方法 ` datetime.today(): 返回当前本地datetime.随着 tzion None datetime.fromtimestamp(time.time()). datetime.now(tz):返回当前本地日期和时间,如果可选参数tz为None或没有详细说明, 这个方法会像today(). datetime.utcnow(): 返回当前的UTC日期和时间,如果tzifo None,那么与now()类似。 datetime.fromtimestamp(timestamp, tz): 根据时间戳返回本地的日期和时间,tz指定时区。 datetime.utcfromtimestamp(timestamp): 根据时间戳返回 UTC datetime. datetime.fromordinal(ordinal): 根据Gregorian ordinal 返回datetime. datetime.combine(date, time): 根据date和time返回一个新的datetime. datetime.strptime(date_string, format): 根据date_string和format返回一个datetime.

实例方法

datetime.date(): 返回相同年月日的date对象.

datetime.time(): 返回相同时分秒微秒的time对象.

datetime.replace(kw): kw in [year, month, day, hour, minute, second,

microsecond, tzindol, 与date类似.类属性

datetime.min:datetime(MINYEAR,1,1).datetime.max:datetime(MAXYEAR,12,31,23,59,59,999999).

实例属性(read-only)

datetime.year:1 至 9999 datetime.month:1 至 12 datetime.day:1 至 n datetime.hour:In

range(24).0 至 23 datetime.minute:In range(60).datetime.second:In range(60).

datetime.microsecond:In range(1000000).

`

代码语言:txt
复制
from datetime import datetime as dt

print(dt.now())
代码语言:txt
复制
2019-05-29 10:45:43.644259

os - 操作系统相关

  • 跟操作系统相关,主要是文件操作
  • 与系统相关的操作,主要包含在三个模块里
    • os, 操作系统目录相关
    • os.path,系统路径相关操作
    • shutil,高级文件操作,目录树的操作,文件赋值,删除,移动
  • 路径:
    • 绝对路径:总是从根目录上开始
    • 相对路径:基本以当前环境为开始的一个相对的地方

os 模块

代码语言:txt
复制
import os
代码语言:txt
复制
# getcwd() 获取当前的工作目录
# 格式:os.getcwd()
# 返回值:当前工作目录的字符串
# 当前工作目录就是程序在进行文件相关操作,默认查找文件的目录

mydir = os.getcwd()
print(mydir)
代码语言:txt
复制
d:\Jupyter\nootbook\笔记
代码语言:txt
复制
# chdir() 改变当前的工作目录
# change directory
# 格式: os.chdir(路径)
# 返回值:无

os.chdir('d:\\Jupyter\\nootbook\\笔记')
mydir = os.getcwd()
print(mydir)
代码语言:txt
复制
d:\Jupyter\nootbook\笔记
代码语言:txt
复制
# listdir() 获取一个目录中所有子目录和文件的名称列表
# 格式:os.listdir(路径)
# 返回值:所有子目录和文件名称的列表

# help(os.listdir)
ld = os.listdir()
print(ld)
代码语言:txt
复制
['.ipynb_checkpoints', 'Jupyter简单教程.ipynb', 'Jupyter简单教程.md', 'OOP-1.ipynb', 'OOP-1.md', 'OOP-2.ipynb', 'OOP-2.md', 'OOP-3.ipynb', 'OOP-3.md', 'OOP-4.ipynb', 'OOP-4.md', 'OOP-5.ipynb', 'OOP-5.md', 'str模块.ipynb', 'str模块.md', 'Untitled.ipynb', '内置数据结构listsetdicttuple(一).ipynb', '内置数据结构listsetdicttuple(一).md', '内置数据结构listsetdicttuple(三).ipynb', '内置数据结构listsetdicttuple(三).md', '内置数据结构listsetdicttuple(二).ipynb', '内置数据结构listsetdicttuple(二).md', '函数.ipynb', '函数.md', '分支结构.ipynb', '分支结构.md', '变量.ipynb', '变量.md', '变量作用域和列表.ipynb', '变量作用域和列表.md', '常见模块.ipynb', '异常处理.ipynb', '异常处理.md']
代码语言:txt
复制
# makedirs() 递归创建文件夹
# 格式:os.makedirs(递归路径)
# 返回值:无
# 递归路径:多个文件夹层层包含的路径就是递归路径 例如 a/b/c...

rst = os.makedirs("ruochen")
print(rst)
代码语言:txt
复制
---------------------------------------------------------------------------
代码语言:txt
复制
FileExistsError                           Traceback (most recent call last)
代码语言:txt
复制
<ipython-input-85-3afd52f8d53f> in <module>
代码语言:txt
复制
      4 # 递归路径:多个文件夹层层包含的路径就是递归路径 例如 a/b/c...
代码语言:txt
复制
      5 
代码语言:txt
复制
----> 6 rst = os.makedirs("ruochen")
代码语言:txt
复制
      7 print(rst)
代码语言:txt
复制
D:\Anaconda3\lib\os.py in makedirs(name, mode, exist_ok)
代码语言:txt
复制
    219             return
代码语言:txt
复制
    220     try:
代码语言:txt
复制
--> 221         mkdir(name, mode)
代码语言:txt
复制
    222     except OSError:
代码语言:txt
复制
    223         # Cannot rely on checking for EEXIST, since the operating system
代码语言:txt
复制
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'ruochen'
代码语言:txt
复制
# system() 运行系统shell命令
# 格式:os.system(系统命令)
# 返回值:打开一个shell或者终端界面
# 一般推荐使用subprocess代替

# ls是列出当前文件和文件夹的系统命令
rst = os.system("ls")
print(rst)

# 在当前目录下创建一个ruochen.haha 的文件
rst = os.system("touch ruochen.haha")
print(rst)
mydir = os.getcwd()
print(mydir)
代码语言:txt
复制
1
代码语言:txt
复制
1
代码语言:txt
复制
d:\Jupyter\nootbook\笔记
代码语言:txt
复制
# getenv() 获取指定的系统环境变量值
# 相应的还有putenv
# 格式:os.getenv('环境变量名')
# 返回值:指定环境变量名对应的值
rst = os.getenv("PATH")
print(rst)
代码语言:txt
复制
D:\Anaconda3;D:\Anaconda3\Library\mingw-w64\bin;D:\Anaconda3\Library\usr\bin;D:\Anaconda3\Library\bin;D:\Anaconda3\Scripts;D:\Anaconda3;D:\Anaconda3\Library\mingw-w64\bin;D:\Anaconda3\Library\usr\bin;D:\Anaconda3\Library\bin;D:\Anaconda3\Scripts;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64\compiler;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\dotnet\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;D:\MinGW\bin\;D:\Program Files\Git\Git\cmd;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;D:\python-3.7.0\Scripts\;D:\python-3.7.0\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Java\jdk1.8.0_131\bin;D:\Microsoft VS Code\bin;D:\Anaconda3\Library\bin;D:\Anaconda3;D:\Anaconda3\Scripts;
代码语言:txt
复制
# exit() 退出当前程序
# 格式:exit()
# 返回值:无

值部分

  • os.curdir: curretn dir, 当前目录
  • os.pardir: parent dir, 父亲目录
  • os.sep: 当前系统的路径分隔符
    • windows: "\"
    • linux: "/"
  • os.linesep: 当前系统的路径换行符号
    • wndows: "\r\n"
    • unix,linux,macos: "\n"
  • os.name: 当前系统名称
    • windows: nt
    • mac,unix,linux: posix
代码语言:txt
复制
print(os.pardir)
print(os.curdir)
代码语言:txt
复制
..
代码语言:txt
复制
.
代码语言:txt
复制
print(os.sep)
print(os.linesep)
代码语言:txt
复制
\
代码语言:txt
复制
# 在路径相关的操作中,不要手动拼写地址,因为手动拼写的路径可能不具有移植性
path = "d:\\Jupyter" + "\\" + "ruochen"
print(path)
代码语言:txt
复制
d:\Jupyter\ruochen
代码语言:txt
复制
print(os.name)
代码语言:txt
复制
nt

os.path模块,跟路径相关的模块

代码语言:txt
复制
import os.path as op
代码语言:txt
复制
# abspath() 将路径转化为绝对路径
# abselute 绝对
# 格式:os.path.abspath('路径')
# 返回值:路径的绝对路径形式

# linux中
# . 点号,代表当前目录
# .. 双点,代表父目录
absp = op.abspath(".")
print(absp)
代码语言:txt
复制
d:\Jupyter\nootbook\笔记
代码语言:txt
复制
# basename() 获取路径中的中文名部分
# 格式:os.path.basename(路径)
# 返回值:文件名字符串

bn = op.basename("d:\Jupyter\nootbook\笔记")
print(bn)

bn = op.basename("d:\Jupyter\nootbook\笔记")
print(bn)
代码语言:txt
复制
笔记
代码语言:txt
复制
笔记
代码语言:txt
复制
# join() 将多个路径拼合成一个路径
# 格式:os.path.join(路径1,路径2...)
# 返回值:组合之后的新路径字符串

help(op.join)

bd = "d:\\Jupyter\\nootbook"
fn = "笔记"

p = op.join(bd, fn)
print(p)
代码语言:txt
复制
Help on function join in module ntpath:
代码语言:txt
复制
join(path, *paths)
代码语言:txt
复制
    # Join two (or more) paths.
代码语言:txt
复制
d:\Jupyter\nootbook\笔记
代码语言:txt
复制
# split() 将路径切割为文件夹部分和当前文件部分
# 格式:os.path.split(路径)
# 返回值:路径和文件名组成的元组

t = op.split("d:\\Jupyter\\nootbook\\笔记")
print(t)

d,p = op.split("d:\\Jupyter\\nootbook\\笔记")
print(d, p)
代码语言:txt
复制
('d:\\Jupyter\\nootbook', '笔记')
代码语言:txt
复制
d:\Jupyter\nootbook 笔记
代码语言:txt
复制
# isdir() 检测是否是目录
# 格式:os.path.isdir(路径)
# 返回值:布尔值

rst = op.isdir("d:\\Jupyter\\nootbook\\笔记")
rst
代码语言:txt
复制
True
代码语言:txt
复制
# exists() 检测文件或者目录是否存在
# 格式:os.path.exists(路径)
# 返回值:布尔值

e = op.exists("d:\\Jupyter\\nootbook\\haha")
e
代码语言:txt
复制
False

shutil 模块

代码语言:txt
复制
import shutil
代码语言:txt
复制
# copy() 复制文件
# 格式:shutil.copy(来源路径,目标路径)
# 返回值:返回目标路径
# 拷贝的同时,可以给文件重名

rst = shutil.copy("d:\\Jupyter\\nootbook\\ruochen.txt", "d:\\Jupyter\\nootbook\\ruo.txt")
print(rst)
代码语言:txt
复制
d:\Jupyter\nootbook\ruo.txt
代码语言:txt
复制
# copy2() 复制文件,保留原数据(文件信息)
# 格式:shutil.copy2(来源路径,目标路径)
# 返回值:返回目录路径
# 注意:copy和 copy2的唯一区别在于copy2复制文件时尽量保留原数据
代码语言:txt
复制
# copyfile() 将一个文件中的内容复制到另一个文件当中
# 格式:shutil.copyfile('源路径', '目标路径')
# 返回值:无

rst = shutil.copyfile("d:\\Jupyter\\nootbook\\ruochen.txt", "d:\\Jupyter\\nootbook\\ruo.txt")
print(rst)
代码语言:txt
复制
d:\Jupyter\nootbook\ruo.txt
代码语言:txt
复制
# move() 移动文件/文件夹
# 格式:shutil.move(源路径,目标路径)
# 返回值:目标路径

rst = shutil.move("d:\\Jupyter\\nootbook\\ruo.txt", "d:\\Jupyter")
print(rst)
代码语言:txt
复制
---------------------------------------------------------------------------
代码语言:txt
复制
Error                                     Traceback (most recent call last)
代码语言:txt
复制
<ipython-input-42-ef90fe1e5588> in <module>
代码语言:txt
复制
      3 # 返回值:目标路径
代码语言:txt
复制
      4 
代码语言:txt
复制
----> 5 rst = shutil.move("d:\\Jupyter\\nootbook\\ruo.txt", "d:\\Jupyter")
代码语言:txt
复制
      6 print(rst)
代码语言:txt
复制
D:\Anaconda3\lib\shutil.py in move(src, dst, copy_function)
代码语言:txt
复制
    559         real_dst = os.path.join(dst, _basename(src))
代码语言:txt
复制
    560         if os.path.exists(real_dst):
代码语言:txt
复制
--> 561             raise Error("Destination path '%s' already exists" % real_dst)
代码语言:txt
复制
    562     try:
代码语言:txt
复制
    563         os.rename(src, real_dst)
代码语言:txt
复制
Error: Destination path 'd:\Jupyter\ruo.txt' already exists

归档和压缩

  • 归档:把多个文件或者文件夹合并到一个文件中
  • 压缩:用算法把多个文件或者文件夹无损或者有损合并到一个文件当中
代码语言:txt
复制
# make_archive() 归档操作
# 格式:shutil.make_archive("归档之后的目录和文件名","后缀","需要归档的文件夹")
# 返回值:归档之后的地址

# help(shutil.make_archive)
rst = shutil.make_archive("d:\\Jupyter\\Jupyter", "zip","d:\\Jupyter\\ruochen")
print(rst)
代码语言:txt
复制
d:\Jupyter\Jupyter.zip
代码语言:txt
复制
# unpack_archive() 解包操作
# 格式:shutil.unpack_archive('归档文件地址', '解包之后的地址')
# 返回值:解包之后的地址

zip - 压缩包

  • 模块名称叫做 zipfile
代码语言:txt
复制
import zipfile
代码语言:txt
复制
# zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])
# 创建一个ZipFile对象,表示一个Zip文件。参数file表示文件的路径或类文件对象

zf = zipfile.ZipFile("d:\\Jupyter\\Jupyter.zip")
print(zf)
代码语言:txt
复制
<zipfile.ZipFile filename='d:\\Jupyter\\Jupyter.zip' mode='r'>
代码语言:txt
复制
# ZipFile.getinfo(name):
# 获取zip文档内指定文件的信息。返回一个zipfile.ZipInfo对象,它包括文件的详细信息。

rst = zf.getinfo("ruochen.txt")
print(rst)
代码语言:txt
复制
<ZipInfo filename='ruochen.txt' compress_type=deflate filemode='-rw-rw-rw-' file_size=10 compress_size=5>
代码语言:txt
复制
# ZipFile.namelist()
# 获取zip文档内所有文件的名称列表。

nl = zf.namelist()
print(nl)
代码语言:txt
复制
['ruo.txt', 'ruochen.txt']
代码语言:txt
复制
# ZipFile.extractall([path[, members[, pwd]]])
# 解压zip文档中的所有文件到当前目录。

rst = zf.extrctall("d:\\Jupyter")
print(rst)
代码语言:txt
复制
---------------------------------------------------------------------------
代码语言:txt
复制
AttributeError                            Traceback (most recent call last)
代码语言:txt
复制
<ipython-input-70-1e5f0e1be43d> in <module>
代码语言:txt
复制
      2 # 解压zip文档中的所有文件到当前目录。
代码语言:txt
复制
      3 
代码语言:txt
复制
----> 4 rst = zf.extrctall("d:\\Jupyter")
代码语言:txt
复制
      5 print(rst)
代码语言:txt
复制
AttributeError: 'ZipFile' object has no attribute 'extrctall'

random

  • 随机数
  • 所有的随机模块都是伪随机
代码语言:txt
复制
import random
代码语言:txt
复制
# random() 获取0-1之间的随机小数
# 格式:random.random()
# 返回值:随机0-1之间的小数

print(random.random())
代码语言:txt
复制
0.8612816713389804
代码语言:txt
复制
# choice() 随机返回序列中的某个值
# 格式:random.choice(序列)
# 返回值:序列中的某个值

l = [str(i)+"haha" for i in range (10)]
print(l)
rst = random.choice(l)
print(rst)
代码语言:txt
复制
['0haha', '1haha', '2haha', '3haha', '4haha', '5haha', '6haha', '7haha', '8haha', '9haha']
代码语言:txt
复制
1haha
代码语言:txt
复制
# shuffle() 随机打乱列表
# 格式:random.shuffle(列表)
# 返回值:打乱顺序之后的列表

l1 = [i for i in range(10)]
print(l1)

random.shuffle(l1)
print(l1)

# help(random.shuffle)
代码语言:txt
复制
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
代码语言:txt
复制
[4, 6, 7, 2, 1, 5, 0, 8, 9, 3]
代码语言:txt
复制
# randit(a,b): 返回一个a到b之间的随机整数,包含a和b

print(random.randint(0, 100))
help(random.randint)
代码语言:txt
复制
13
代码语言:txt
复制
Help on method randint in module random:
代码语言:txt
复制
randint(a, b) method of random.Random instance
代码语言:txt
复制
    Return random integer in range [a, b], including both end points.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常用模块
  • calendar
  • time模块
    • 时间戳
      • 夏令时
        • 时间元组
        • datetime模块
        • datetime.datetime 模块
        • os - 操作系统相关
        • os 模块
        • 值部分
        • os.path模块,跟路径相关的模块
        • shutil 模块
        • 归档和压缩
        • zip - 压缩包
        • random
        相关产品与服务
        云数据库 SQL Server
        腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档