• 文件和异常(二)


    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(" First_number: ")

        if first_num == 'q':

            exit()

        second_num = input(" Second_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!

    """

  • 相关阅读:
    jquery获取浏览器URL参数
    jquery获取、设置、删除cookie
    jquery获取当前按钮、截取字符串、字符串拼接、动态循环添加元素
    Callback函数
    window.opener和window.open的使用
    JavaScript内置对象
    SeaJS:一个适用于 Web 浏览器端的模块加载器
    hihocoder 1388 &&2016 ACM/ICPC Asia Regional Beijing Online Periodic Signal
    Codeforces Round #373 (Div. 2)
    fzu 1759Super A^B mod C 指数循环节
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/6852308.html
Copyright © 2020-2023  润新知