python-时间模块,random、os、sys、shutil、json和pickle模块

一、time与datetime模块

time模块:

  时间戳:表示的是从1970年1月1日00:00:00开始按秒计算的偏移量,返回类型为float类型

  格式化时间字符串(Format String)

  结构化的时间(struct_time):struct_time元组共有9个元素(年月日时分秒,一年中的第几周,一年中的第几天,夏令时)

# print(time.time())#1533962144.060534
# print(time.localtime())#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=11, tm_hour=12, tm_min=36, tm_sec=4, tm_wday=5, tm_yday=223, tm_isdst=0)
# print(time.localtime(1533962144.060534))#time.struct_time(tm_year=2018, tm_mon=8, tm_mday=11, tm_hour=12, tm_min=35, tm_sec=44, tm_wday=5, tm_yday=223, tm_isdst=0)

# print(time.gmtime())  # UTC时区的struct_time

# print(time.strftime("%Y-%m-%d %X"))#2018-08-11 12:37:32   把一个代表时间的元组或者struct_time转化为格式化的时间字符串
# print(time.strftime("%Y-%m-%d %H:%M:%S"))#2018-08-11 12:54:11

# print(time.strptime(‘2012-10-10‘,‘%Y-%m-%d‘))把格式化时间转换为结构化

# mktime(t) : 将一个struct_time结构化时间转化为时间戳。
# print(time.mktime(time.localtime()))#1533962846.0

#格林威治时间
#asctime([t]) : 把一个表示时间的元组或者struct_time表示为这种形式:‘Sun Jun 20 23:21:05 1993‘
# print(time.ctime())#Sat Aug 11 12:50:17 2018  把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式

datetime模块:

包含如下类:

# datetime模块
import datetime
print(datetime.datetime.now())#2018-08-11 13:08:02.573983

# print(datetime.datetime.now() + datetime.timedelta(3)) #当前时间+3天
# print(datetime.datetime.now() + datetime.timedelta(-3)) #当前时间-3天
# print(datetime.datetime.now() + datetime.timedelta(hours=3)) #当前时间+3小时
# print(datetime.datetime.now() + datetime.timedelta(minutes=30)) #当前时间+30分
print (datetime.datetime.now() + datetime.timedelta(days=30,hours=1,minutes=1,seconds=1))

# 替换时间:replace 可替换某个时间的值
res = datetime.datetime.now()
res = res.replace(year=1997)
print(res)

二、random模块

# print(random.random())# 用于产生一个  0<=x<1 之间的随机浮点数   开闭
# print(random.randint(1,8))# random.randint(a, b),用于生成一个指定范围内的整数  开开
# print(random.randrange(1,8,3))# random.randrange([start], stop[, step])
# print(random.choice([1,2,32,3,2,"哈哈"]))#random.choice(sequence)从中选一个
# print(random.sample([1,2,32,3,2,"哈哈"],2)) #random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列
# res = [1,2,32,3,2,"哈哈"]
# random.shuffle(res) #打乱原有列表中的元素
# print(res)

#注 :sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence

三、sys模块

用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,如:Python解释器

import sys

print(sys.argv)#[‘D:/练习/时间至json模块/时间模块.py‘]
print(sys.version)#3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]
print(sys.maxsize)#最大的int值
print(sys.path)#返回模块的搜索路径
print(sys.platform)#返回操作系统平台名称

# sys.exit() #(0是正常退出,其他为异常)

注:如果python中导入的package或module不在环境变量PATH中,那么可以使用sys.path将要导入的package或module加入到PATH环境变量中。

实现模拟进度条:

"""
    当程序要进行耗时操作时例如  读写  网络传输
    需要给用户提示一个进度信息
    "[*********        ]"
    "[*********       ]"
    "[************    ]"
    "[****************]"
"""
# print("[*          ]")
# print("[**         ]")

print("[%-10s]" % ("*" * 1))
print("[%-10s]" % ("*" * 2))
print("[%-10s]" % ("*" * 3))
print("[%-10s]" % ("*" * 4))

# 比例 0 - 1     0.5
def progress(percent,width=30):
    percent = percent if percent <= 1 else 1
    text = ("\r[%%-%ds]" % width) % ("*" * int((width * percent)))
    text = text + "%d%%"
    text = text % (percent * 100)
    print(  text  , end="")

# 模拟下载
# 文件大小
import  time
file_size = 10240
# 已经下载大小
cur_size = 0
while True:
    time.sleep(0.5)
    cur_size += 1021
    progress(cur_size / file_size)
    if cur_size >= file_size:
        print()
        print("finish")
        break

四、os模块

import os

print(os.getcwd())#获取当前?工作?目录,即当前python脚本?工作的?目录路路径

os.chdir(‘dirname‘)#  改变当前脚本?工作?目录;相当于shell下cd

print(os.curdir)#返回当前?目录,就是一个‘.‘
os.pardir  获取当前?目录的?父?目录字符串串名:(‘..‘)
os.makedirs(‘dirname1/dirname2‘)#生成多层递归目录
os.removedirs(‘dirname1‘)#若?目录为空,则删除,并递归到上?一级?目录
os.mkdir(‘dirname‘)#?生成单级?目录;相当于shell中mkdir dirname
os.rmdir(‘dirname‘) #删除单级空?目录,若?目录不不为空则?无法删除,报错;相 当于shell中rmdir dirname
print(os.listdir(‘dirname‘))#列列出指定?目录下的所有?文件和?子?目录,包括隐藏?文件, 并以列列表?方式打印
os.remove(‘1.py‘)  #删除?一个?文件
os.rename("oldname","newname")  重命名?文件/?目录
os.stat(‘path/filename‘)  获取?文件/?目录信息
print(os.stat(‘D:\练习\时间至json模块\时间模块.py‘))

print(os.name ) #输出字符串串指示当前使?用平台。win->‘nt‘; Linux->‘posix‘
print(os.sep) #输出操作系统特定的路路径分隔符,win下为"\",Linux下为"/"
os.linesep #输出当前平台使?用的?行行终?止符,win下为"\t\n",Linux下为"\n"
print(os.pathsep)#输出?用于分割?文件路路径的字符串串 win下为;,Linux下为:
os.system("bash command")#  运?行行shell命令,直接显示

print(os.environ) #获取系统(计算机)环境变量量
os.path.abspath(path)  返回path规范化的绝对路径
os.path.split(path)  将path分割成目录和文件名二元组返回
os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小

五、shutil模块

该模块拥有许多文件、文件夹、压缩包等处理功能

import shutil

# shutil.copyfileobj(open(‘old.xml‘,‘r‘), open(‘new.xml‘, ‘w‘))
# shutil.copyfileobj(fsrc, fdst[, length])(copyfileobj方法只会拷贝文件内容)将文件内容拷贝到另一个文件中
# shutil.copyfile(‘f1.log‘, ‘f2.log‘)(copyfile只拷贝文件内容)
# shutil.copy(‘f1.log‘, ‘f2.log‘)  拷贝文件和权限
# shutil.copystat (src, dst) 拷?贝?文件状态信息 后访问 后修改 权限 提供两 个?文件路路径

# shutil.move (src, dst) 移动?目录和?文件

# shutil.ignore_patterns(*patterns)忽略指定的文件。通常配合下面的copytree()方法使用。
# shutil.copytree (src, dst, symlinks=False, ignore=None) 拷?贝?目录
#     symlinks:指定是否复制软链接。小心陷入死循环。
#     ignore:指定不参与复制的文件,其值应该是一个ignore_patterns()方法。
#     copy_function:指定复制的模式

# shutil.rmtree 删除?目录 可以设置忽略略?文件

压缩与解压缩:

shutil 可以打包 但是?无法解包 并且打包也是调?用tarfile 和 zipFile完成 ,解压需要按照格式调?用对应的模块

打包:

import shutil
#将
/Users/jerry/PycharmProjects/package/packa ge1下的文件打包放置 /test/目录
shutil.make_archive("test","tar","/Users/jerry/PycharmProjects/package/packa ge1")

ZipFile和TarFile

import zipfile

# 压缩
z = zipfile.ZipFile(‘zfj.zip‘, ‘w‘)
z.write(‘a.log‘)
z.write(‘data.data‘)
z.close()

# 解压
z = zipfile.ZipFile(‘laxi.zip‘, ‘r‘)
z.extractall()
z.close()
import tarfile

# 压缩
tar = tarfile.open(‘your.tar‘,‘w‘)
tar.add(‘/Users/wupeiqi/PycharmProjects/bbs2.log‘, arcname=‘bbs2.log‘)
tar.add(‘/Users/wupeiqi/PycharmProjects/cmdb.log‘, arcname=‘cmdb.log‘)
tar.close()

# 解压
tar = tarfile.open(‘your.tar‘,‘r‘)
tar.extractall()  # 可设置解压地址
tar.close()

注:zipfile压缩不会保留文件状态信息,tarfile会保留

六、json和pickle模块

1.序列化:把对象(变量)从内存中变成可存储或传输的过程称之为序列化.反之则称之为反序列化

2.序列化的好处

  1.数据持久保存

  2.跨平台数据交互

1.json模块:

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

encoding(序列化):把python对象转换成json字符串

decoding(反序列化):把json字符串转换成python对象import json

# dumps把特定的对象序列化处理为字符串,外形和原来的长的一样,如果直接将dict类型的数据写入json文件中会发生报错
# dic = {"name":‘zfj‘,"age" : 18}
# dic1 = json.dumps(dic)
# print(type(dic))#<class ‘dict‘>
# print(dic1)# {"name": "zfj", "age": 18}

# rdic = json.loads(dic1)#反序列化
# print(rdic)

name_emb = {‘a‘: ‘1111‘, ‘b‘: ‘2222‘, ‘c‘: ‘3333‘, ‘d‘: ‘4444‘}

# 数据转成str,并写入到json文件中
json.dump(name_emb, open(‘db.json‘, "a"))

# 注:json.load() 用于从json文件中读取数据
jsObj = json.load(open(‘db.json‘))
print(jsObj)
print(type(jsObj))

2.pickle模块

与json模块不同的是pickle模块序列化和反序列化的过程叫:pickling和unpickling

  pickling:将python对象转换为字节流的过程

  unpickling:将字节流二进制文件或字节对象转换成python对象的过程

import pickle

dic = {"name":‘zfj‘,"age" : 18}

# dumps&loads
# 序列化
# dic1 = pickle.dumps(dic)
# print(dic1)#b‘\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x03\x00\x00\x00zfjq\x02X\x03\x00\x00\x00ageq\x03K\x12u.‘
# print(type(dic1))#<class ‘bytes‘>

#反序列化
# rdic = pickle.loads(dic1)
# print(rdic)#{‘name‘: ‘zfj‘, ‘age‘: 18}

# dump&load
# 序列化
with open(‘pickle.txt‘, ‘wb‘) as f:
    pickle.dump(dic, f)

# 反序列化
with open(‘pickle.txt‘, ‘rb‘) as f:
    rdic = pickle.load(f)
print(rdic)

总结: 

json是可以在不同语言之间交换数据的,而pickle只在python之间使用。

json只能序列化最基本的数据类型,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

  

原文地址:https://www.cnblogs.com/mangM/p/9460502.html

时间: 2024-08-02 18:35:02

python-时间模块,random、os、sys、shutil、json和pickle模块的相关文章

8.模块介绍 time &amp;datetime模块 random os sys shutil json &amp; picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式

本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.p

python 关于操作文件的相关模块(os,sys,shutil,subprocess,configparser)

一:os模块 os模块提供了许多允许你程序与操作系统直接交互的功能 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录

shutil模块、json和pickle模块

shutil模块: 高级的文件.文件夹.压缩包处理模块 json和pickle模块 之前学过eval内置方法可以将一个字符串转化成Python对象,但eval方法是有局限性的,对于普通的数据类型,json.loads.eval都可以使用,但遇到特殊类型的时候,eval就不能使用了, 所以eval的重点通常还是用来执行一个字符串表达式,并返回表达式的值. 序列化:我们把对象从内存中变成可存蓄或可传送的过程称为序列化,在Python中叫picking,在其他语言中叫serialization .ma

python模块(json和pickle模块)

json和pickle模块,两个都是用于序列化的模块 • json模块,用于字符串与python数据类型之间的转换 • pickle模块,用于python特有类型与python数据类型之间的转换 两个模块,都提供了dumps,dump,loads,load 4个功能 1 import json 2 s = '{"key1":"value1","key2":"value2"}' # ==> 用json模块将字符串转化成其他

json与pickle模块

Python-19 1. json与pickle模块 什么是序列化和反序列化 序列化:是将内存中的数据结构,转换成一种中间格式,将转化后的中间格式存储到硬盘,或者基于网络传输 反序列化:是将硬盘中或者网路中传过来的中间格式,转换成内存中的数据结构 2. 序列化和反序列化有什么用 将状态通过中间格式存储到硬盘,可以保存程序的运行状态 数据可以跨平台交互,不同的编程语言,通过序列化成中间格式就可以互相交互 存到硬盘的文本文件都是字符串,再次使用时,需要将硬盘中的数据转化成以前的数据类型状态 3. j

day6 模块time datetime random os sys json pikle

不写容易忘,感觉好多都陌生了,重新补回来 模块:用一坨代码实现了某个功能的代码集合 time & datetime模块 #_*_coding:utf-8_*_ import time import datetime   print(time.clock()) #返回处理器时间,3.3开始已废弃 print(time.process_time()) #返回处理器时间,3.3开始已废弃 print(time.time()) #返回当前系统时间戳 print(time.ctime()) #输出Tue

模块:time,random,os,sys

时间模块 import time # print(time.time()) #时间戳 # print(time.strftime('%Y-%m-%d %X')) #格式化字符 # print(time.strftime('%Y-%m-%d %H-%M-%S')) # print(time.localtime()) #时间字符串 # print(time.struct_time) #时间戳是计算机能够识别的时间,格式化时间字符串是人能看的时间,元组用来操作时间 # print(time.local

模块( collections , time , random , os , sys)

认识模块: 一条代码 < 语句块 < 代码块(函数, 类) < 模块. collections (克莱克森斯) 1. Counter #用来查看字符出现的次数.s = "upup qwe" print(Counter(s)) 队列: FI FO. 先进先出  栈:  FI LO. 先进后出 2.deque(双向队列) from collections import deque s = deque() s.append("娃哈哈") s.append

Python中模块之os &amp; sys的功能介绍

os & sys的功能介绍 1. os模块 1. os的变量 path 模块路径 方法:os.path 返回值:module 例如:print(os.path) >>> <module 'ntpath' from 'D:\\python3.5.2\\lib\\ntpath.py'> #返回posixpath和netpath两个模块中任意一个模块 name 模块名 方法:os.name 返回值:str 例如:print(os.name) >>> nt