IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 9.文件和异常 -> 正文阅读

[Python知识库]9.文件和异常

9.1从文件中读取数据
文本文件可以存储的数据量及其丰富:天气数据、交通数据、社会经济数据、文学作品等。每当需要分析或是修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其如此。

with open('pi_digits.txt') as file_object:
	contents=file_object.read()
	print(contents.rstrip())

read()到达文件末尾时返回一个空字符串,而将这个空字串显示出来时就是一个空行。因此在打印输出时,在print语句中使用了rstrip()。
Python一般都是在当前执行文件的所在目录中查找文件,可有时候要打开不在程序文件所属目录中的文件,因此可使用相对文件路径来打开该文件夹中的文件。

file_path='C:\Users\ehmatthes\other_files\filename.txt'
with open(file_path) as file_object:

逐行读取

filename='pi_digits.txt'
with open(filename) as file_object:
	for line in file_object:
		print(line.rstrip())

在每行的末尾都有着一个看不见的换行符,而print语句也会加上一个换行符,因此每行末尾都有两个换行符,一个来自文件一个来自print语句,为消除多余的空白行,可在print语句中使用rstrip()。
在使用关键字with时,open()返回的文件对象只在with代码块内可用。如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表。

filename='pi_digits.txt'
with open(filename) as file_object:
	lines=file_object.readlines()

若字符串要删除空格,则可以使用strip()而不是rstrip()。
检查字符串是否包含在另一个字符串中可以使用in。

if birthday in pi_string:
	print("...")

9.2写入文件
要将文本写入文件,你在调用open()时需要提供另一个实参,告诉Python你要写入打开的文件。

filename='programming.txt'
with open(filename,'w') as file_object:
	file_object.write("I love programming.")

在调用open()时的第二个实参可以指定读取模式(‘r’)、写入模式(’w’)、附加模式(‘a’)或是可以读取和写入文件的模式(‘r+’),如果你省略模式实参,Python将以默认的只读模式打开文件。
函数write()不会在你写入的文本末尾添加换行符,因此在你写入多行时且没有指定换行符,文件看起来可能不是你希望的那样。
附加到文件
如果你要给文件添加内容,而不是覆盖原有的内容,可以使用附加模式打开文件。当你以附加模式打开文件时,Python不会在返回文件对象前清空文件,而你写入到文件的行都将添加到文件末尾。

filename='programming.txt'
with open(filename,'a') as file_object:
	file_object.write("I also love finding meaning in large datasets.\n")

9.3 异常
Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知所措的错误时,它都会创建一个异常对象。
使用try-except代码块
当你认为可能发生了错误时,可编写一个try-except代码块来处理可能引发的异常。你让Python尝试运行一些代码,并告诉它如果这些代码引发了指定的异常,该怎么办。

tryprint(5/0)
except ZeroDivisionError:
	print("You can't dibide by zero!")

使用异常避免程序崩溃
在发生错误时,如果程序还有工作没有完成,妥善地处理错误尤其重要。如果程序可以妥善地处理错误,就可以提示用户进行合理操作,而不至于崩溃。

print("Give me two numbers,and I'll divide them.")
print("Enter 'q' to quit.")
while True:
	first_number=input("\nFirst number: ")
	if first_number=='q':
		break
	second_number=input("Second number: ")
	try:
		answer=int(first_number)/int(second_number)
	except ZeroDivisionError:
		print("You can't divide by 0!")
	else:
		print(answer)

分析文本
方法split()以空格为分隔符将字符串分拆成多个部分,并且将这些部分存储到一个列表中。结果时一个包含字符串中所有单词地列表,虽然有些单词可能含有标点。

filename='alice.txt'
try:
	with open(filename) as f_obj:
		contents=f_obj.read()
except FileNotFoundError:
	msg="sorry,the file "+filename+" does not exist."
	print(msg)
else
	words=contents.split()
	num_words=len(words)
	print("The file "+filename+" has about "+str(num_words)+" words.")

在有些时候我们需要告诉用户,有一个步骤进行失败,但是并非每次捕获到异常时都需要告诉用户,有时候你希望程序在异常发生时一声不吭,就像什么都没发生一样继续运行。

def count words(filename):
	try:
		==snip==
	except FileNotFoundError:
		pass
	else:
		==snip==

9.4存储数据
很多程序都要求用户输入某种信息,并保存他们所提供的信息:一种简单的方式是使用模块json来存储数据。JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见格式。
json.dump()和json().load()的使用
我们来编写一个存储一组数字的简短程序,再写一个将这些数字读取到内存中的程序。第一个程序使用json.dump()来存储这些数字,而第二个程序将使用json.load()。
函数json.dump()接受两个实参:要存储的数据以及可用于存储数据的文件对象。

import json
numbers=[2,3,5,7,11,13]
filename='numbers.json'
with open(filename,'w') as f_obj:
	json.dump(numbers,f_obj)

with open(filename) as f_obj:
	numbers=json.load(f_obj)

保存和读取用户生成的数据

improt json
#如果以前存储了用户名,就加载它
#否则,就提示用户输入用户名并存储它
filename='username.json'
try:
	with open(filename) as f_obj:
		username=json.load(f_obj)
except FileNotFoundError:
	username=input("What is your name? ")
	with open(filename,'w') as f_obj:
		json.dump(username,f_obj)
		print("We'll remember you when you come back, "+username +"!")
else:
	print("Welcome back, "+username+"!")

在编程过程中,你经常会遇到这样的情况:代码可以正确的运行,但可以做进一步的改进——将代码划分为一系列完成具体工作的函数。这样的过程叫做重构。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:29:40  更:2021-08-15 15:31:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:21:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码