时间模块与系统模块的操作

一、时间模块

import time
print(time)     # <module 'time' (built-in)>

import time
print('暂停开始')
secs = 3
time.sleep(secs)   #  延迟线程的运行
print('暂停结束')

重点:

1、时间戳:可以作为数据的唯一标识,是相对于1970-1-1-0:0:0 时间插值

import time
print(time.time())      # 1554878644.9071436

2、当前时区时间:东八区(上海时区)

print(time.localtime())
# time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10,tm_hour=14, tm_min=48,tm_sec=29, tm_wday=2, tm_yday=100, tm_isdst=0)

#
print(time.localtime()[0])        # 2019
print(time.localtime().tm_year)   # 2019

3、格林威治时区

import time
print(time.gmtime())

4、可以将时间戳转化为时区的time

import time
print(time.localtime(5656565653))
print(time.localtime(time.time()))

5、应用场景 => 通过时间戳,获得该时间戳能反映出的年月日等信息

import time
print(time.localtime(5656565653).tm_year)      # 2149
%y 两位数的年份表示(00-99%Y 四位数的年份表示(000-9999%m 月份(01-12%d 月内中的一天(0-31%H 24小时制小时数(0-23%I 12小时制小时数(01-12%M 分钟数(00=59%S 秒(00-59
%a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366%p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 %% %号本身

6、格式化时间

格式化的字符串,时间tuple

import time
res = time.strftime('%Y-%m-%d %j days')
print(res)      # 2019-04-10 200 days

t = (2020, 4, 10, 10, 19, 22, 2, 200, 0)
res = time.strftime('%Y-%m-%d %j days', t)
# 没有确保数据的安全性,只是将元组信息转化为时间格式的字符串
print(res)          # 2020-04-10 200 days

7、需求:输入一个年份,判断其是否是闰年

解析:
1.能被400整除 year % 400 == 0
2.能被4整除不能被100整除  year % 4 == 0 and year % 100 != 0

方式一:
year = int(input('year:>>>'))
b1 = year % 400 == 0
b2 = year % 4 == 0 and year % 100 != 0
if b1 or b2:
    print('是闰年')
else:
    print('不是闰年')

方式二:
import calendar
print(calendar.isleap(2018))     # False   # 判断是否为闰年

8、import calender

①判断闰年:calendar.isleap(year)
import calendar
print(calendar.isleap(2000))     # True

②查看某年某月日历:calendar.month(year, month)
import calendar
print(calendar.month(2019,4))

③查看某年某月起始星期与当月天数:calendar.monthrange(year, month)
import calendar
print(calendar.monthrange(2019, 4))     # (0,30)
print(calendar.monthrange(2019, 3))     # (4,31)

④查看某年某月某日是星期几:calendar.weekday(year, month, day)
import calendar
print(calendar.weekday(2019, 4, 10))     # 2   星期是从0开始,0代表星期一

9、datatime 可以运算的时间

import datetime
print(datetime)     # <module 'datetime' from 'D:\\Python36\\lib\\datetime.py'>

res = datetime.datetime.now()
print(res)          # 2019-04-10 15:30:39.649993
print(type(res))    # <class 'datetime.datetime'>

day = datetime.timedelta(days=1)
print(day)          # 1 day, 0:00:00
print(type(day))    # <class 'datetime.timedelta'>
  
# res与day都是对象,可以直接做运算
print(res-day)      # 2019-04-09 15:50:15.130227
①当前时间:datetime.datetime.now()
import datetime
res = datetime.datetime.now()
print(res)        # 2019-04-10 15:30:39.649993

②昨天:datetime.datetime.now() + datetime.timedelta(days=-1)
import datetime
res = datetime.datetime.now() + datetime.timedelta(days=-1)
print(res)       # 2019-04-09 15:44:19.486885

③修改时间:datatime_obj.replace([...])
import datetime
res = datetime.datetime.now()
print(res.replace(year=2200))     # 2200-04-10 15:30:39.649993

④格式化时间戳:datetime.date.fromtimestamp(timestamp)
print(datetime.date.fromtimestamp(5656565653))    # 2149-04-01

 

二、系统模块

1、sys:系统

import sys
print(sys)          # <module 'sys' (built-in)>
print(sys.argv)     # ['D:/SH-fullstack-s3/day17/part1/系统模块.py']
print(sys.path)     # *****

# 退出程序,正常退出时exit(0)
print(sys.exit(0))

# 获取Python解释程序的版本信息
print(sys.version)    # 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]

print(sys.maxsize)    # 9223372036854775807
a = 922337203685477580712321
print(a, type(a))     # 922337203685477580712321 <class 'int'>

# 操作系统平台名称
print(sys.platform)   # win32

2、os:操作系统

import os

1、生成单级目录:os.mkdir('dirname')
print(os.mkdir('aaa'))     # 不存在创建,存在抛异常

2、生成多层目录:os.makedirs('dirname1/.../dirnamen2')
print(os.makedirs('a/b/c'))
3、移除多层空目录:os.removedirs('dirname1/.../dirnamen')
print(os.removedirs('a/b/c'))
4、重命名:os.rename("oldname","newname")
print(os.rename('111','222'))

5、删除文件:os.remove
print(os.remove('ccc.py'))

6、工作目录(当前工作目录):os.getcwd()
print(os.getcwd())    # D:\SH-fullstack-s3\day17\part1  # 当前工作目录

7、删除单层空目录(删除文件夹):os.rmdir('dirname')
print(os.rmdir('bbb'))
print(os.rmdir('bbb/eee'))
print(os.remove('bbb/ddd.py'))
8、移除多层空目录:os.removedirs('dirname1/.../dirnamen')

9、列举目录下所有资源:os.listdir('dirname')
print(os.listdir(r'D:\SH-fullstack-s3\day17'))    # ['part0', 'part1']

10、路径分隔符:os.sep
print(os.sep)              # \

11、行终止符:os.linesep
print(os.linesep)
print(ascii(os.linesep))   # '\r\n'

12、文件分隔符:os.pathsep
print(os.pathsep)            # ;

13、操作系统名:os.name
print(os.name)       # nt

14、操作系统环境变量:os.environ
print(os.environ)

15、执行shell脚本:os.system()
print(os.system('dir'))

16、当前工作的文件的绝对路径
print(__file__)   # D:/SH-fullstack-s3/day17/part1/系统模块.py

3、os.path:系统路径操作

import os.path

1、执行文件的当前路径:__file__
print(__file__)      # D:/SH-fullstack-s3/day17/part1/系统模块.py

2、返回path规范化的绝对路径:os.path.abspath(path)
print(os.path.abspath(r'a'))    # D:\SH-fullstack-s3\day17\part1\a

3、将path分割成目录和文件名二元组返回:os.path.split(path)
print(os.path.split(r'D:\SH-fullstack-s3\day17\part1'))   # ('D:\\SH-fullstack-s3\\day17', 'part1')
print(os.path.split(r'D:\SH-fullstack-s3\day17\part1\\')) # ('D:\\SH-fullstack-s3\\day17\\part1', '')

4、上一级目录:os.path.dirname(path)
print(os.path.dirname(r'D:\SH-fullstack-s3\day17\part1'))  # D:\SH-fullstack-s3\day17

5、最后一级名称:os.path.basename(path)
print(os.path.basename(r'D:\SH-fullstack-s3\day17'))      # day17

6、指定路径是否存在:os.path.exists(path)
print(os.path.exists(r'D:\SH-fullstack-s3\day17\part1\系统模块.py'))  # True
print(os.path.exists(r'ccc'))   # False

7、是否是绝对路径:os.path.isabs(path)
print(os.path.isabs(r'D:\SH-fullstack-s3\day17\part1\aaa'))  # True
print(os.path.isabs(r'aaa'))                                 # False

8、是否是文件:os.path.isfile(path)
print(os.path.isfile(r'D:\SH-fullstack-s3\day17\part1\系统模块.py'))  # True
print(os.path.isfile(r'D:\SH-fullstack-s3\day17\part1'))      # False

9、是否是路径:os.path.isdir(path)
print(os.path.isdir(r'D:\SH-fullstack-s3\day17\part1'))   # True
10、路径拼接:os.path.join(path1[, path2[, ...]]) print(os.path.join(r'D:\SH-fullstack-s3\day17\part1', 'a', 'b', 'c')) # 结果为 D:\SH-fullstack-s3\day17\part1\a\b\c 11、最后存取时间:os.path.getatime(path) print(os.path.getatime(r'D:\SH-fullstack-s3\day17\part1\时间模块.py')) # 结果为 1554883111.9426434 12、最后修改时间:os.path.getmtime(path) print(os.path.getmtime(r'D:\SH-fullstack-s3\day17\part1\时间模块.py')) # 结果为 1554883111.948644 13、目标大小:os.path.getsize(path) print(os.path.getsize(r'D:\SH-fullstack-s3')) # 4096
import sys
import os.path as os_path

1、重点:先将项目的根目录设置为常量 -> 项目中的所有目录与文件都应该参照次目录进行导包
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
print(BASE_PATH)              # D:/SH-fullstack-s3/day17
sys.path.append(BASE_PATH)    # 重点:将项目目录添加至环境变量

2、拼接项目中某一文件或文件夹的绝对路径
file_path = os_path.join(BASE_PATH,'part1','时间模块.py')
print(file_path)                    # D:/SH-fullstack-s3/day17\part1\时间模块.py
print(os_path.exists(file_path))    # True

3、重点:normcase函数
# 通过normcase来添加项目根目录到环境变量
print(os.path.normcase('c:/windows\\system32\\'))
BASE_PATH = os_path.normcase(os_path.join(__file__,'a','aaa'))
print(BASE_PATH)      # d:\sh-fullstack-s3\day17\part1\系统模块.py\a\aaa
sys.path.append(BASE_PATH)

 

os.getcwd()用法:返回当前的工作目录

 

三、序列化:将python的字典转化为字符串传递给其他语言或保存

1、json序列化:将json类型的对象与json类型的字符串相互转换

import json
序列化
将json类型的对象与json类型的字符串相互转换,{} 与 [] 嵌套形成的数据(python中建议数据的从{}开始)
dic = {'a': 1, 'b': [1, 2, 3, 4, 5]}

json_str = json.dumps(dic)
print(json_str, type(json_str)     # {"a": 1, "b": [1, 2, 3, 4, 5]}  <class 'str'>

with open('1', 'w', encoding='utf-8') as w:
    json.dump(dic, w)


反序列化
json_str = '''{"a": 1, "b": [1, 2, 3, 4, 5]}'''
new_dic = json.loads(json_str)  # json类型的字符串不认''
print(new_dic, type(new_dic))   # {'a': 1, 'b': [1, 2, 3, 4, 5]} <class 'dict'>

with open('1', 'r', encoding='utf-8') as r:
    res = json.load(r)
    print(res)

2、pickle:序列化

可以将任意类型对象与字符串进行转换

import pickle
dic = {'a': 1, 'b': [1, 2, 3, 4, 5]}
res = pickle.dumps(dic)
print(res)

with open('2', 'wb') as w:
    pickle.dump(dic, w)

print(pickle.loads(res))
with open('2', 'rb') as r:
    print(pickle.load(r))

 

posted @ 2019-04-10 21:35  TianShu  Views(366)  Comments(0Edit  收藏  举报