Python 文件和异常
2018-08-17 09:47:41来源:博客园 阅读 ()
一、从文件中读取数据
1.读取整个文件
1 with open('pi_digits.txt')as file_object: 2 contents = file_object.read() 3 print(contents)
(当前目录下已有pi_digits.txt)
函数 open() 接受一个参数,文件名称,然后在当前执行的文件所在的目录中查找指定的文件,最后返回一个文件对象。
关键字 with 在不需要访问文件后将其关闭。(也可以使用open,close,但是如果程序中断没有close则会出问题,文件不关闭可能导致数据丢失或者受损)
有了文件对象之后,可以用 read() 方法读取文件的全部内容,并将其作为一个长长的字符串存储在contents中
(read()读到文件末尾时返回一个空字符串,而将这个空字符串显示出来时是一个空行,所以上面程序执行完最后会多出一个空行,可用rstrip()删除末尾的空行 print(contents.rstrip()))
2.文件路径
如果文件不在当前目录下,则需要提供文件路径。
相对文件路径:文件在当前文件夹的子文件夹中。比如在当前目录的test文件夹下:
在Linux和OS X 中,可以这样写: 1 with open('test/pi_digits.txt')as file_object:
在Windows中,可以这样写: 1 with open('test\pi_digits.txt')as file_object:
绝对文件路径:文件在计算机中的准确位置。一般路径较长,存储在一个变量中;
在Linux和OS X 中,可以这样写:
1 file_path = '/home/ehmatthes/other_files/text_files/filename.txt' 2 with open(file_path) as file_object:
在Windows中,可以这样写:
1 file_path = 'C:\Users\ehmatthes\other_files\text_files\filename.txt' 2 with open(file_path) as file_object:
3.逐行读取
可使用for循环
1 filename = 'pi_digits.txt' 2 3 with open(filename)as file_object: 4 for line in file_object: 5 print(line)
第1行将文件名存在变量中是一种常见的做法。
4.创建一个包含文件各行内容的列表
1 filename = 'pi_digits.txt' 2 3 with open(filename)as file_object: 4 lines = file_object.readlines() 5 6 for line in lines: 7 print(line.rstrip())
4??处的 readlines() 方法从文件中读取每一行,并将其存储在一个列表中
5.使用文件的内容
1 filename = 'pi_digits.txt' 2 3 with open(filename)as file_object: 4 lines = file_object.readlines() 5 6 pi_string = '' 7 for line in lines: 8 pi_string += line.strip() 9 10 print(pi_string) 11 print(len(pi_string))
读取文本文件时,Python 将其中的所有文本都解读为字符串,若要使用数值,则用int(),float()转换
6.包含一百万位的大型文件
Python没有任何限制,只要内存足够大,下面的程序如果不加限制,有的机器可能受不了
1 filename = 'pi_million_digits.txt' 2 3 with open(filename)as file_object: 4 lines = file_object.readlines() 5 6 pi_string = '' 7 for line in lines: 8 pi_string += line.strip() 9 10 print(pi_string[:50]+'...') 11 print(len(pi_string)) 12 # 结果是 13 # 3.141592653589793238462643383279502884197169399375... 14 # 1000002
二、写入文件
保存数据的最简单的方式之一是将其写入到文件中
1.写入空文件
1 filename = 'a.txt' 2 3 with open(filename, 'w')as file_object: 4 file_object.write('I love you. ')
open() 中有两个实参,一个是文件名称,一个是 'w',这告诉Python以写入模式打开这个文件,打开文件时,可以指定读取模式( 'r' ),写入模式( 'w' ),附加模式( 'a' ),读取和写入模式( 'r+' ),省略模式实参则是只读模式。
如果要写入的文件不存在,open() 将会自动创建它;如果已经存在,则会覆盖之前的内容,这点要注意。
Python只能将字符串写入文本文件,若要存储数值,则应该使用str()将其转换后写入。
2.写入多行
函数 write() 不会在末尾添加换行符,所以要这样写: 1 file_object.write('I love you.\n') 2 file_object.write('I love you too.')
3.附加到文件
使用附加模式,写入的行都会添加至文件末尾,如果文件不存在会创建新文件。
1 with open(filename, 'a') as file_object: 2 file_object.write('\nFuck you! ')
三、异常
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。
每当发生错误时,Python都会创建一个异常对象,如果你编写了处理该异常的代码,程序将继续运行,否则程序将停止。
异常是使用 try-except 代码块 处理的,使用该代码块时,即便出现异常,程序会显示你编写的信息,然后继续运行。
1.处理 ZeroDivisionError 异常
下面创建一个除法计算器:
1 print("Give me two numbers, and I'll divide them. ") 2 print("Enter 'q' to quit. ") 3 4 while True: 5 first_number = input("\nFirst number: ") 6 if first_number == 'q': 7 break 8 second_number = input("Second number: ") 9 if second_number == 'q': 10 break 11 try: 12 answer = int(first_number)/int(second_number) 13 except ZeroDivisionError: 14 print("You can't divide by 0 ! ") 15 else: 16 print(answer)
第11-16行为 try-except-else 代码块,将能引发异常的代码放在try语句中,try代码成功运行时运行else
2.失败时一声不吭
Python有一个 pass 语句,可在代码块中使用它来让 Python 什么都不要做
1 try: 2 answer = int(first_number)/int(second_number) 3 except ZeroDivisionError: 4 pass 5 else: 6 print(answer)
四、使用模块json来存储数据
JSON(JavaScript Object Notation) 格式最初是为 JavaScript 开发的,后来成为了一种常见的格式。
模块 json 让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。
1.使用 json.dump() 和 json.load()
先编写一个存储一组数字的简短程序;
1 import json 2 3 numbers = [2, 3, 4, 5, 6, 7, 9] 4 5 filename = 'num.json' 6 with open(filename, 'w') as f_obj: 7 json.dump(numbers, f_obj)
在编写一个将这些数字读取到内存中的程序:
1 import json 2 3 filename = 'num.json' 4 with open(filename) as f_obj: 5 numbers = json.load(f_obj) 6 7 print(numbers)
这是一种在程序之间共享数据的简单方式
重构:将代码划分为一系列完成具体工作的函数
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:NumPy教程
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash