python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]

文章目录

    • 一.认识异常
    • 二.处理异常
            • 1.基本语法:
            • 2.异常名称+描述:
            • 4.捕获异常的具体信息
            • 5.包含多个异常
            • 6.esle:没有异常时要执行的语句
            • 7.finally :不管有没有异常都会执行的代码块
    • 三.文件异常+文件夹的操作
    • 四.time模块
        • 1.time模块-常用方法
        • 2.
        • 3.实例:time模块-时间元组
        • 3.实例:time模块-时间格式
        • 4.时间戳转换为时间元祖,将时间元祖转换为时间字符串
      • 5.time.strptime 将时间字符串转换为时间元祖
        • 6.sleep 推迟调用线程的运行,secs指秒数
    • 常见DOS命令
    • 六.习题(异常+time模块)
            • 1.加法运算:
            • 1.将字符串的时间"2017-10-10 23:40:00"转换为时间戳和时间元组
            • 2.字符串格式更改。如提time = "2017-10-10 23:40:00",想改为 time= "2017/10/10 23:40:00"
            • 3.获取当前时间戳转换为指定格式日期
            • 4.获得三天前的时间

一.认识异常

Python遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,则程序就会用所谓的回溯(Traceback,一种错误信息)来终止执行。
异常举例:

open('python.txt','r')

这里就会报错:
python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第1张图片

二.处理异常

  • 异常是指在程序执行过程中发生的一个事件,会影响程序的正常运行,所以一般需要进行捕获异常并处理。
  • 异常的捕获使用try/except/finally语句进行捕获操作,并告诉python发生异常时怎么办.
1.基本语法:
try:
    <语句>
except <异常类型1>[, 异常参数名1]:
    <异常处理代码1>
except <异常类型2>[, 异常参数名2]:
    <异常处理代码2>
else:
    <没有异常时候的处理代码>
finally:
    <不管是否有异常,最终执行的代码块>
try语句按照如下方式工作:
    1.首先,执行try子句(在关键字try和关键字except之间的语句) 
    2.如果没有异常发生,忽略except子句,try子句执行后结束。 
    3.如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。 
    4.如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。 
    5.一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。
    6.多只有一个分支会被执行。 处理程序将只针对对应的try子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。 
    7.一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组.

2.异常名称+描述:

python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第2张图片
python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第3张图片
python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第4张图片
######3. 举例:

try:
    print(aaa)  #如果这句话有错,就会捕获到异常
except ValueError:   #NameError 异常
    print('变量未定义') #对NameError异常的处理
except NameError:
    print('变量未定义')
4.捕获异常的具体信息
try:
    print(aaa)  #如果这句话有错,就会捕获到异常
except NameError as e:
    print(e)#打印具体的异常信息
5.包含多个异常
try:
    # print(aaa)
    files = open('aaa.txt','r',encoding= 'utf-8')  #如果这句话有错,就会捕获到异常
except (NameError,FileNotFoundError) as e:
    print(e)#打印具体的异常信息
6.esle:没有异常时要执行的语句
try:
    files = open('aaa.txt','r',encoding= 'utf-8')  #如果这句话有错,就会捕获到异常
except Exception as e:  #有异常时执行
    print(e)
else:
    print('没有异常时执行')
7.finally :不管有没有异常都会执行的代码块
try:
    print('打开文件!')
    files = open('aaa.txt','w',encoding='utf-8')
    try:
        files.write('测试一下行不行')
    except:
        print('写入失败')
    else:
        print('写入成功')
    finally:  #不管有没有异常都要执行的代码块
        print('关闭文件')
        files.close()
except Exception as e:
    print(e)

三.文件异常+文件夹的操作

  • 我们将导致错误的代码行open放在了一个try代码块中。如果try代码块中的代码运行起来没有问题,python将跳except代码块;如果try代码块中的代码导致了错误,python将查找这样的except代码块,并运行其中的代码,即其中指定的错误与引发的错误相同。

四.time模块

  • 常用的一种获取当前时间以及时间格式化的模块,模块名称:time
  • time模块在python原生安装存在,不需安装操作,直接使用
  • 导入方式:import time

1.time模块-常用方法

python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第5张图片

2.

3.实例:time模块-时间元组

python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第6张图片

3.实例:time模块-时间格式

python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第7张图片

import time
print(time.altzone)#回格林威治西部的夏令时地区的偏移秒数
 #接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"24个字符的字符串。
print(time.asctime())  #返回可读形式的当前时间
print(time.asctime((2017,12,12,12,12,12,3,340,1)))#返回指定的时间
print(time.time())#返回当前时间的时间戳(1970.1.1,00:00开始到现在总共的秒数)
print(time.gmtime()) #返回时间元祖  返回的是格林威治时间元祖,不是我们本地的时间
print(time.localtime())#返回时间元祖  返回的是本地的时间元祖

输出结果:

-32400
Fri Jan  3 14:22:17 2020
Thu Dec 12 12:12:12 2017
1578032537.7465622
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=3, tm_hour=6, tm_min=22, tm_sec=17, tm_wday=4, tm_yday=3, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=3, tm_hour=14, tm_min=22, tm_sec=17, tm_wday=4, tm_yday=3, tm_isdst=0)
time.struct_time(tm_year=2020, tm_mon=1, tm_mday=3, tm_hour=14, tm_min=22, tm_sec=17, tm_wday=4, tm_yday=3, tm_isdst=0)

4.时间戳转换为时间元祖,将时间元祖转换为时间字符串

import time
#获取当前时间戳
times = time.time()
formatTime = time.localtime(times)
print(formatTime)
#接收以时间元组,并返回指定格式可读字符串表示的当地时间,格式由fmt决定。
print(time.strftime(u'%Y-%m-%d %H:%M:%S',formatTime))

输出:

time.struct_time(tm_year=2020, tm_mon=1, tm_mday=3, tm_hour=14, tm_min=24, tm_sec=48, tm_wday=4, tm_yday=3, tm_isdst=0)
2020-01-03 14:24:48

5.time.strptime 将时间字符串转换为时间元祖

import time
times = '2017-12-12 12:12:12'
#转换为时间元祖
formatTime = time.strptime(times,'%Y-%m-%d %H:%M:%S')
print(formatTime)
#将时间元祖转换为时间戳i mktime
print(time.mktime(formatTime))

输出:

time.struct_time(tm_year=2017, tm_mon=12, tm_mday=12, tm_hour=12, tm_min=12, tm_sec=12, tm_wday=1, tm_yday=346, tm_isdst=-1)
1513051932.0

6.sleep 推迟调用线程的运行,secs指秒数

import time
for i in range(1,2):
    print('让子弹飞一会')
    time.sleep(2)
    print('子弹在飞')
    time.sleep(2)
    print('子弹到了')

输出:

让子弹飞一会
子弹在飞
子弹到了

常见DOS命令

python自学篇十三[ (异常:try+except+else+finally)+time模块(时间戳)+文件夹操作函数+常见DOS命令+习题]_第8张图片

六.习题(异常+time模块)

1.加法运算:

编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。在用户输入的任何一个值不是数字时都捕获TypeError 异常,并打印一条友好的错误消息。

try:
    num1 = int(input('请输入第一个数字:'))
    num2 = int(input('请输入第二个数字:'))
except ValueError:
    print('请输入一个整数')
else:
    print(num1+num2)
1.将字符串的时间"2017-10-10 23:40:00"转换为时间戳和时间元组

代码:

import time
times="2017-10-10 23:40:00"
formatTime=time.strptime(times,'%Y-%m-%d %H:%M:%S')#将字符串时间转换为时间元祖
print(formatTime)
print(time.mktime(formatTime))#将时间元组转换为时间错

结果:

time.struct_time(tm_year=2017, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=1, tm_yday=283, tm_isdst=-1)
1507650000.0

2.字符串格式更改。如提time = “2017-10-10 23:40:00”,想改为 time= “2017/10/10 23:40:00”

代码:

import time
times="2017-10-10 23:40:00"

formatTime=time.strptime(times,'%Y-%m-%d %H:%M:%S')#将字符串时间转换为时间元祖
print(time.strftime('%Y/%m/%d %H:%M:%S',formatTime))

结果:

2017/10/10 23:40:00

3.获取当前时间戳转换为指定格式日期

代码:

import time
times="2017-10-10 23:40:00"

now = time.time()
formatTime=time.localtime(now)
print(time.strftime('%Y-%m-%d %H:%M:%S',formatTime))

结果:

2020-01-03 16:54:32
4.获得三天前的时间

代码:

import time
times="2017-10-10 23:40:00"

threeDayAgo=time.time()-60*60*24*3
formatTime=time.localtime(threeDayAgo)
print(time.strftime('%Y-%m-%d %H:%M:%S',formatTime))

结果:

2019-12-31 16:54:54

你可能感兴趣的:(python基础)