文件和异常(二)

1、处理大型文件

在/tmp/testfile 目录下又一个num1.txt文件,包含内容:

-bash-3.2$ cat /tmp/testfile/num1.txt 

123456789

10111213141516171819

对该文件进行逐行读取,读取内容存储到变量中,并且只显示前10个字符,后面的用“...“代替

脚本:

 #filename = read_num1.py

file = '/tmp/testfile/num1.txt'

 with open(file) as file_object:

    contents = file_object.readlines()

 pi_string = ''

for line in contents:

    pi_string += line.strip()

 

print(pi_string[:10] + '....')

字符串的[:n]操作就是提取前n个字符。

如果n等于负数,就是逆向取(倒数)

 

异常:

 python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让python不知

所措的错误时,它都会常见一个异常对象。如果你编写了处理该异常的代码,程序将继续运行;

如果没有对异常进行处理,程序将停止,并显示一个traceback。

 

异常是使用try-except代码块处理的。try-except代码块让python执行指定的操作,同时告诉

python发生异常时候怎么办。

 

简单的异常:

ZeroDivisionError

#filename = division.py

print(5/0)

这个代码让一个实数除以0

结果:

Traceback (most recent call last):

  File "division.py", line 2, in <module>

    print(5/0)

ZeroDivisionError: division by zero

 

告诉python如何处理这个代码——

#filename = division.py

try:

    print(5/0)

except ZeroDivisionError:

    print("Your can't divide by zero!")

我们把需要需要运行的代码写在try代码块中,

如果try代码块中的代码运行起来没有问题,python将跳过except代码块;如果try中的代码导致了错误,python将

运行except代码块。

效果:

-bash-3.2$ python3.6 division.py 

Your can't divide by zero!

 

做一个简单的计算器:
 

#filename = division.py

import sys

print("Give me two numbers , and I will divide them.")

print("Enter 'q' to quit.")

while True:

    first_num = input("\nFirst_number: ")

    if first_num == 'q':

        exit()

    second_num = input("\nSecond_number: ")

    if second_num == 'q':

        exit()

    answer = int(first_num) / int(second_num)

    print(answer)

这个代码中,让用户任意输入两个数字,然后程序进行除法运算,给出结果。

效果:

"""

-bash-3.2$ python3.6 division.py 

Give me two numbers , and I will divide them.

Enter 'q' to quit.

 First_number: 100

 Second_number: 3

33.333333333333336

"""

如果有用户在second_number中输入0,就会导致程序出现ZeroDivisionError。

程序崩溃可能不好,但是让用户看到traceback也不是好主意。

修改这个程序来避免崩溃

   try:

        answer = int(first_num) / int(second_num)

    except ZeroDivisionError:

        print("your can not divide by 0!")

    else:

        print(answer)

把算法写在try代码块中,如果出现了ZeroDivisionError崩溃,则运行except中的代码,

else:语句就是如果没有出现ZeroDivisionError,则运行else中的代码。

效果:

 """

First_number: 10

Second_number: 0

your can not divide by 0!

"""

 

转载于:https://www.cnblogs.com/alben-cisco/p/6852308.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值