简谈python常用模块之time与datetime,random,os,sys,shutil

time与datetime模块:
在Python中,通常有这几种方式来表示时间:

  • 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。

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

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

    import time
    print(time.time())# 时间戳:1487130156.419527
    print(time.strftime("%Y-%m-%d %X"))
    print(time.localtime()) #本地时区的struct_time
    print(time.gmtime()) #UTC时区的struct_time
    格式:
    %a Locale’s abbreviated weekday name.
    %A Locale’s full weekday name.
    %b Locale’s abbreviated month name.
    %B Locale’s full month name.
    %c Locale’s appropriate date and time representation.
    %d Day of the month as a decimal number [01,31].
    %H Hour (24-hour clock) as a decimal number [00,23].
    %I Hour (12-hour clock) as a decimal number [01,12].
    %j Day of the year as a decimal number [001,366].
    %m Month as a decimal number [01,12].
    %M Minute as a decimal number [00,59].
    %p Locale’s equivalent of either AM or PM. (1)
    %S Second as a decimal number [00,61]. (2)
    %U Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Sunday are considered to be in week 0. (3)
    %w Weekday as a decimal number [0(Sunday),6].
    %W Week number of the year (Monday as the first day of the week) as a decimal number [00,53]. All days in a new year preceding the first Monday are considered to be in week 0. (3)
    %x Locale’s appropriate date representation.
    %X Locale’s appropriate time representation.
    %y Year without century as a decimal number [00,99].
    %Y Year with century as a decimal number.
    %z Time zone offset indicating a positive or negative time difference from UTC/GMT of the form +HHMM or -HHMM, where H represents decimal hour digits and M represents decimal minute digits [-23:59, +23:59].
    %Z Time zone name (no characters if no time zone exists).
    %% A literal ‘%’ character.

其中计算机认识的时间只能是’时间戳’格式,而程序员可处理的或者说人类能看懂的时间有: ‘格式化的时间字符串’,‘结构化的时间’

time.localtime()#是时间结构体
print(time.mktime(time.localtime()))#1473525749.0
print(time.asctime())#Wed May  8 17:21:18 2019
print(time.ctime()) #Wed May  8 17:21:55 2019
time.sleep(1)#阻塞一秒钟

datetime模块

print(datetime.datetime.now())#2019-05-08 17:24:47.045783
print(datetime.datetime.now() +datetime.timedelta(days=10))
print(datetime.datetime.now() +datetime.timedelta(days=10))#向后延迟10天
print(datetime.datetime.now()+datetime.timedelta(hours=3))#向后延时3小时
print(datetime.datetime.now()+datetime.timedelta(minutes=10))

random模块

i

mport random
print(random.random())#随机产生一个0-1的小数
print(random.randint(1, 3))#产生一个1-3的整数,包含1和3
print(random.randrange(1,3))#产生一个1-3不包含3的整数
print(random.choice([1, 2, 3, 4]))#从列表中任意去一个值作为元素返回
print(random.sample([1,2,3,4],2))#从列表中任意取出两个值作为列表
l=[1, 3, 4, 5]
random.shuffle(l)#打散列表。
print(l)
#产生随机数字与字母的验证码

import random
def make_code(n):
    res=''
    l=[]
    for i in range(10):
        l.append(str(i))
    for i in range(n):
        s1=chr(random.randint(65,90))
        s2=random.choice(l)
        res+=random.choice([s1,s2])
    return res
print(make_code(5))

os模块

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir(“dirname”) 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: (’.’)
os.pardir 获取当前目录的父目录字符串名:(’…’)
os.makedirs(‘dirname1/dirname2’) 可生成多层递归目录
os.removedirs(‘dirname1’) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir(‘dirname’) 生成单级目录;相当于shell中mkdir dirname
os.rmdir(‘dirname’) 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir(‘dirname’) 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename(“oldname”,“newname”) 重命名文件/目录
os.stat(‘path/filename’) 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name 输出字符串指示当前使用平台。win->‘nt’; Linux->‘posix’
os.system(“bash command”) 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将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的大小
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素

sys模块

1 sys.argv 命令行参数List,第一个元素是程序本身路径
2 sys.exit(n) 退出程序,正常退出时exit(0)
3 sys.version 获取Python解释程序的版本信息
4 sys.maxint 最大的Int值
5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
6 sys.platform 返回操作系统平台名称

shutil
拷贝文件:

import shutil
shutil.copyfile("time_record","time_record1")
#拷贝文件,time_record拷贝到time_record1
shutil.copyfileobj(open('time_record','r'), open('time_record1', 'w'))#从一个文件中读取内容到另一个文件中
shutil.ignore_patterns(*patterns)
shutil.copytree(src, dst, symlinks=False, ignore=None)
递归的去拷贝文件夹
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除 shutil.rmtree('folder1')
shutil.copytree('f1', 'f2', symlinks=True, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))


 递归的去删除文件
    shutil.rmtree('folder1')
    shutil.move(src, dst)
递归的去移动文件,它类似mv命令,其实就是重命名
    shutil.move('folder1', 'folder3')

shutil.make_archive(base_name, format,…)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如 data_bak =>保存至当前路径
如:/tmp/data_bak =>保存至/tmp/
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象

ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')

#将文件压缩到压缩包中

import zipfile
import zipfile
z=zipfile.ZipFile('my.zip','w')
z.write('time_record')
z.write("time_record1")

import tarfile
压缩

 t=tarfile.open('/tmp/egon.tar','w')
 t.add('/test1/a.py',arcname='a.bak')
 t.add('/test1/b.py',arcname='b.bak')
 t.close()

解压

t=tarfile.open('/tmp/egon.tar','r')
 t.extractall('/egon')
t.close()

你可能感兴趣的:(简谈python常用模块之time与datetime,random,os,sys,shutil)