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!
"""