4,模块-time-os-sys

假装没事ソ 提交于 2020-01-04 04:21:25

 

time模块,

os模块

sys模块

 

 

和时间有关的我们就要用到时间模块,在使用模块之前,需要先导入模块.

import time
print(123)
print(234)
time.sleep(15)  #程序暂停3s后执行
#(线程)推迟指定的时间运行,单位秒
print(345)
print(456)

print(time.time())#输出:1531273400.7828987

 

表示时间的三种方式

在python中,通常有这三种方式,来表示时间:时间戳,元组(struct_time),格式化的时间字符串,

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

import time
time1=time.time()
print(time1,type(time1)) #输出:1531274153.0989287 <class 'float'>

 

(2)格式化的时间字符串(Format String):'1992.04.14'

import time

# print(time.time(),type(time.time()))
ret=time.strftime("%Y-%m-%d %H:%M:%S")
print(ret,type(ret))#输出:2018-07-11 09:54:01 <class 'str'>
print(ret[:10])#因为是str类型,可以切片取值 输出:2018-07-11

 

可以输出带汉字的时间格式:

 

import time

time1=time.strftime("%Y{}%m{}%d{} %H{}:%M{}:%S{}")
print(time1,type(time1))#因为time1是字符串形式的,所以可以进行格式化
#输出:2018{}07{}20{} 18{}:20{}:00{} <class 'str'>
print(time1.format('年','月','日','时','分','秒'))
#输出:2018年07月20日 18时:20分:00秒

 

 

 

 

(3)元组(struct_time):struct_time元组共有9个元素:(年,月,日,时,分,秒,一年中的第几周,一年中的第几天)

 

接下来,来介绍一下python中表示时间的几种格式

import time
# 时间戳
print(time.time()) #输出:1531275074.85565

# 时间字符串
print(time.strftime("%Y-%m-%d %H:%M:%S")) #输出:2018-07-11 10:11:54
print(time.strftime("%Y-%m-%d %H-%M-%S")) #输出:2018-07-11 10-12-29

# 时间元组:localtime将一个时间戳转换为当前时区的struct_time
ret=time.localtime()
ret1=time.struct_time(ret)
print(ret1)
print(ret1[:6]) #元组可以取值,输出:(2018, 7, 11, 10, 31, 1)
# 输出:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=11, tm_hour=10, tm_min=23, tm_sec=33, tm_wday=2, tm_yday=192, tm_isdst=0)

 

小结:时间戳是计算机能够识别的时间;时间字符串是人类能够看懂的时间;元组是用来操作时间的.

 

几种格式之间的转换:

 

三种类型的时间转换

import time
# 格式化时间--->结构化时间
ft=time.strftime("%Y-%m-%d %H:%M:%S")
st=time.strptime(ft,"%Y-%m-%d %H:%M:%S")
print(st) #输出:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=11, tm_hour=10, tm_min=49, tm_sec=55, tm_wday=2, tm_yday=192, tm_isdst=-1)

# 结构化时间--->时间戳
t=time.mktime(st)
print(t) #输出:1531277395.0

# 时间戳--->结构化时间
t1=time.time()
st1=time.localtime(t1)
print(st1) #输出:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=11, tm_hour=10, tm_min=49, tm_sec=55, tm_wday=2, tm_yday=192, tm_isdst=0)
st1=time.gmtime(t1) #gmtime()是伦敦时间
print(st1) #输出:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=11, tm_hour=2, tm_min=49, tm_sec=55, tm_wday=2, tm_yday=192, tm_isdst=0)


# 结构化时间--->格式化时间
ft=time.strftime('%Y/%m/%d %H:%M:%S',st)
print(ft) #输出:2018/07/11 10:54:45

 

一些特殊的转化

 

 

import time
# 结构化时间--->%a %b %d %H:%M:%s %Y 串
time.asctime(结构化时间),如果不传参数,直接返回当前时间的格式化串

print(time.asctime()) #输出:Wed Jul 11 11:25:20 2018
print(time.asctime(time.localtime())) #输出:Wed Jul 11 11:25:20 2018
print(time.asctime(time.localtime(1500000))) #输出:Sun Jan 18 16:40:00 1970

# 时间戳--->%a %b %d %H:%M:%s %Y 串

print(time.time())#输出:1531280003.1205306
print(time.ctime()) # 不传参数,直接返回当前时间的格式化串,输出:Wed Jul 11 11:28:56 2018
print(time.ctime(10000)) #输出:Thu Jan  1 10:46:40 1970

t=time.time()
ft=time.ctime(t)
print(ft)  #输出:Wed Jul 11 11:41:41 2018

st=time.localtime()
ft=time.asctime(st)
print(ft)  #输出:Wed Jul 11 11:41:41 2018

 

 时间比较:  

import time
time1='16:30:00'
print(type(time1))#<class 'str'>
if now_time>time1:
    print('{}之后'.format(time1))
else:
    print('{}之前'.format(time1))

 

sys模块

sys模块是与python解释器交互的一个接口

import sys

#返回操作系统平台名称
print(sys.platform) #输出:win32

#返回模块的搜索路径,初始化时使用pythonpath环境变量的值
# print(sys.path)

#获取python解释程序的版本信息
print(sys.version) #输出:3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]

#退出程序,正常退出时exit(0),错误退出sys.exit(1)
print(sys.exit(0))#下面的666不会打印,python解释器不再工作
print(666)

import sys
try:
    sys.exit(0)
except SystemExit as e:
    print(e)


#命令行参数list,第一个元素是程序本身路径
print(sys.argv)# 输出:['D:/pycharm项目文件/py文件/每日上传文件/07-09.py']
import sys
print(sys.argv)
if sys.argv[1]=='admin' and sys.argv[2]=='123456':
    print('启动mysql')
    print(121)
    print(122)
    print(123)
    print(124)
#sys.argv这个模块,在cmd里执行py文件,当时是在C盘建了一个文件
# C:\Windows\System32>python c:/3.py admin 12345
# 输出:['c:/3.py', 'admin', '12345']
# 下面的几个print()不会输出

 

计算时差:

import time
time_now=time.time()
print(time_now)
ft='2018-01-11 09:00:00'
st=time.strptime(ft,"%Y-%m-%d %H:%M:%S")
old_time=time.mktime(st)
time_defferent=time_now-old_time
print(time_defferent)
st1=time.gmtime(time_defferent)


print("您自注册博客园距今是%s年,%s月,%s天,%s小时,%s分,%s秒" % (int(st1[0])-1970,st1[1],st1[2],st1[3],st1[4],st1[5]))
#输出:您自注册博客园距今是0年,7月,1天,12小时,51分,45秒

 

 

os模块

os模块是与操作系统交互的一个接口

工作目录,父级目录,当前目录,(均是指本文件所在的文件夹的绝对路径)

import os
print(__file__)  # 永远是当前文件的绝对路径
获取当前工作目录,即当前python脚本工作的目录路径
print(os.getcwd())#输出:D:\pycharm项目文件\py文件\每日上传文件

os.chdir('f:') #修改本文件的工作目录,实际没有改,
print(os.getcwd()) #输出:F:\

返回当前目录,(".")
print(os.curdir) #输出一个点 .

获取当前目录的父目录字符串名
print(os.pardir)#输出两个点 ..

例子:
print(os.getcwd()) #输出:D:\pycharm项目文件\py文件\每日上传文件
os.chdir(os.pardir)
print(os.getcwd()) #输出:D:\pycharm项目文件\py文件

 

和文件夹相关的

import os

os.mkdir('文件夹1')#直接运行,在当前目录创建一个名为"文件夹1"的文件夹
os.mkdir('文件夹2/文件夹3')#直接运行,在文件夹2下创建一个名为"文件夹3"的文件夹,只能创建一个
os.mkdir('文件夹4/文件夹5')#直接运行,则会报错,因为没有文件夹4,
os.makedirs('文件夹2/文件夹3/文件夹4') #递归创建多个文件夹,
os.rmdir('文件夹1')#删除单级空目录,若目录不为空,则无法删除,
os.removedirs('文件夹2/文件夹3')#删除多个空文件夹,如果有内容,停止删除
print(os.getcwd())
lst=os.listdir("D:\pycharm项目文件\py文件\每日上传文件")
#列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印.
print(lst)
# 输出:['06-08.py', '06-09.py', '06-11.py', '06-13.py', '06-14.py', '06-19.py', '06-21.py', '06-23.py', '06-26.py', '06-27.py', '06-28.py', '06-29.py', '07-02.py', '07-04.py', '07-06.py', '07-09.py', 'index.txt', 'jd.txt', 'json_files', 'low_logging.log', 'oldboy.py', 'tb.txt', '__pycache__', '段路辉.py', '高配版logging.log']

 

和文件相关的.

import os

os.remove("可删除") #删除指定文件,是文件,有后缀的需要带上后缀,
os.rename('待删除.py',"可删除")#前面是当前名字,后面是要改为的名字
print(os.stat('07-09.py'))
print(__file__)
print(os.stat('D:/pycharm项目文件/py文件/每日上传文件/07-09.py'))
# 输出:
# os.stat_result(st_mode=33206, st_ino=47287796087414360, st_dev=376443289, st_nlink=1, st_uid=0, st_gid=0, st_size=23046, st_atime=1531377209, st_mtime=1531377209, st_ctime=1531095190)

stat 结构:

st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)

 

和操作系统差异相关

import os

#输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
print(os.sep) #输出:\

#输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
print(os.linesep) #输出:两个换行


#输出用于分割文件路径的字符串
print(os.pathsep) #输出:输出的是分号

# 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
print(os.name) #输出:nt

 

和执行系统命令相关

import os
# print(os.system("bash command"))

#运行shell命令,获取执行结果
print(os.popen("dir").read())

#获取系统环境变量
print(os.environ)

 

和路径相关:

import os

#获取本文件的绝对路径
p1=os.path.abspath("07-09.py")
print(p1)#输出:D:\pycharm项目文件\py文件\每日上传文件\07-09.py


#将path分割成目录和文件名二元组返回,
print(os.path.split(p1))#输出:('D:\\pycharm项目文件\\py文件\\每日上传文件', '07-09.py')
print(os.path.split(p1)[1])#输出:07-09.py

#返回工作目录
print(os.path.dirname(os.path.abspath("07-09.py")))#输出:D:\pycharm项目文件\py文件\每日上传文件

#通过绝对路径返回当前的文件名
print(os.path.basename(os.path.abspath("07-09.py")))#输出:07-09.py


#拼接路径,
print(os.path.join("D:\pycharm项目文件\py文件\每日上传文件","day29"))
#输出:D:\pycharm项目文件\py文件\每日上传文件\day29


#获取文件大小
print(os.path.getsize("07-09.py"))
print(os.path.getsize(os.path.abspath("07-09.py")))

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!