栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python第六章

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python第六章

python系列

python第一章(上)
python第一章(下)
python第二章
python第三章(上)
python第三章(下)
python第四章(上)
python第四章(下)
python第五章


文件与异常
  • python系列
  • 前言
  • 文件及文件基本操作
    • 文件简介
    • 目录与文件路径
      • 目录与文件
      • 路径
      • 绝对路径
      • 相对路径
    • 操作
      • 打开文件
      • 关闭文件
      • 写文件
        • write
        • writelines方法
      • 读文件
        • read
        • readline
        • readlines
    • 练习
  • CSV文件操作
    • 简介
      • 特征
    • 操作
      • 读操作
      • 写文件
        • writerow
        • writerows
      • 练习
  • 异常和异常处理
    • 简介
    • 处理


前言
  1. 文件及文件基本操作
  2. CSV文件操作
  3. 异常和异常处理

文件及文件基本操作 文件简介
  • 文件,是一组相关数据的集合。组成文件的数据可以是ASCII编码,也可以是二进制编码。
  • 文件名都包含两个部分:主文件名和扩展名,两者之间用“.”隔开。
目录与文件路径 目录与文件
  • 文件——用来组织和管理一组相关数据的;
  • 目录——是用来组织和管理一组相关文件的。
  • 目录,又可称为文件夹,可以包含文件,也可以包含其他目录
  • F盘根目录下包含:
    文件夹“documents”和 文件“文件与异常处理.doc”
  • 文件夹“documents”下包含:
    文件夹“python”、文件“scores.xlsx
    和文件“data.txt”
  • 文件夹“python”下包含:
    文件“5-1.py”
路径
  • 文件保存的位置被称为路径。
绝对路径
  • 从文件所在驱动器名字(又称为“盘符”)开始描述文件的保存位置。
  • 分隔符()
    F:documentspython5-1.py
  • 路径字符串
    “F:\documents\python\5-1.py”
  • 简便的路径字符串
    r “ F:documentspython5-1.py ”
相对路径
  • 从当前工作目录开始描述文件的保存位置。
  • 文件与异常处理的相对路径
    “…\文件与异常处理.doc”
  • data的相对路径
    “…\python\data.doc”
操作
  • 文件的操作一般包含三个步骤:

  • 打开文件 ➡ 读文件或者写文件 ➡ 关闭文件
    打开文件:将文件从外部存储器调入内存的过程

     File对象名 = open(文件路径字符串,模式字符)
    
  • 文件路径字符串:可以采用绝对路径,也可以采用相对路径

  • 模式字符:指定打开文件的类型和操作文件的方式
    模式字符包括两个部分:打开模式和文件类型

  • 打开模式:
    r——读模式(默认)
    w——覆盖写模式
    a——追加写模式
    +——扩展模式:在读模式基础上增加写功能,或者在写模式基础上增加读功能

  • 文件类型:
    t——文本文件(默认),例如txt文件、Python源代码等文件
    b——二进制文件,例如Office文档、图片、声音、视频等文件

打开文件
	File对象名 = open(文件路径字符串,模式字符)

关闭文件
  • 将文件从从内存保存回外存的过程。

     File对象名 .close()
    

  • 打开文件后进行写入时,是将写入的东西放在缓存里,关闭文件则就将缓存的东西存入文件,所以有打开文件一定有关闭文件
写文件
  • 首先要导入os

import os

import os
print(os.getcwd())
  • 显示默认的当前工作目录
  • 运行截图
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
print(os.getcwd())
  • 修改当前默认工作目录
  • 运行截图
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file=open("mydata.txt",'w')
  • 用写模式打开不存在的文件可以在指定文件夹新建一个新文件
  • 运行结果


  • 文件与文件对象file关联,
  • 后续文件操作通过文件对象实现
  • 用文件对象的write方法写文件。
write
  • 具体的格式:

     文件对象.write(写入字符串)
    
  • 将指定的字符串写入文件当前插入点位置

import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file=open("mydata.txt",'w')
file.write("人之初,性本善。")
print(file.write("人之初,性本善。"))
  • 可以打印出写入的字符数
  • 运行结果截图
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file=open("mydata.txt",'w')
file.write("人之初,性本善。")
file.write("性相近,习相远。")
file.close()
  • 连续写入的两个字符串之间没有分隔
  • 运行结果截图
writelines方法
  • 以序列的形式接受多个字符串作为参数,一次性写入多个串

  • 具体格式

     文件对象.write(字符串序列)
    
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file=open("mydata.txt",'w')
ls=["飞雪连天射白鹿","笑书神侠倚碧鸳"]
file.writelines(ls)
file.writelines(["横批:越女剑"])
file.close()
  • 连续写入的两个字符串之间没有分隔
  • 运行结果截图
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file=open("mydata.txt",'w')
ls=["飞雪连天射白鹿t","笑书神侠倚碧鸳n"]
file.writelines(ls)
file.writelines(["横批:越女剑"])
file.close()
  • 可以手动加分隔符在字符串结尾处
  • 运行结果截图
  • 值得注意的是每次打开写入关闭之后,再次打开写入的时候会覆盖,可以用追加模式在文档后接着写('a’或者’a+’)
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file=open("mydata.txt", 'a')
file.write("笑书神侠倚碧鸳")
file.close()
  • 运行结果截图
读文件 read

具体的格式:

	字符串变量 = 文件对象.read()
  • 读出文件所有内容并作为一个字符串返回(分隔符也会读出)
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file = open("mydata.txt",'r')
text = file.read()
print(text)
file.close()
  • 运行结果截图
readline
  • 具体的格式:

     字符串变量 = 文件对象.readline()
    
  • 读出文件中当前行,并以字符串的形式返回

import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file = open("mydata.txt",'r')
text = file.readline()
print(text)
text = file.readline()
print(text)
file.close()
  • 每次读一行
  • 运行结果截图
readlines
  • 具体的格式:

     字符串变量 = 文件对象.readlines()
    
  • 读出文件所有内容并作为一个列表返回

import os
os.chdir('F:\code\编程\py\学习代码\savetext')
file = open("mydata.txt",'r')
text = file.readlines()
print(text)
file.close()
  • 分隔符也会显示,一行为列表的一个元素
  • 运行结果截图
练习
  • 问卷调查结果用文本文件“result.txt”保存。编写程序读文件然后统计各评语出现的次数,并将最终统计结果追加至“result.txt”文件中
  • 直接创建result文本,在里面写入调查问卷的结果
import os
os.chdir('F:\code\编程\py\学习代码\savetext')
#编写读文件函数,返回字符串。
def readFile(fileName):
    file = open(fileName,'r')
    res = file.read()
    return res
#统计各评语出现的次数,结果放在字典里。
def countComments(result):
    resList = result.split(',')
    commentCnts = {}
    for res in resList:
        commentCnts[res] = commentCnts.get(res, 0) + 1
    return commentCnts
#调用读文件函数和统计函数,并将结果追加至result文件中,如图。
result = readFile("result.txt")
dicCnts = countComments(result)
file = open("result.txt",'a')
most=max(dicCnts.values())
for k,v in dicCnts.items():
    if v == most:
        mostComment = k
        break
file.write("根据统计,对今天伙食感觉:n")
file.write("'很满意'的学生{}人;n".format(dicCnts["很满意"]))
file.write("'满意'的学生{}人;n".format(dicCnts["满意"]))
file.write("'一般'的学生{}人;n".format(dicCnts["一般"]))
file.write("'不满意'的学生{}人。n".format(dicCnts["不满意"]))
file.write("出现次数最多的评语是{}n".format(mostComment))
file.close()
  • 运行结果截图
CSV文件操作 简介
  • CSV,是英文Comma-Separated Values的缩写,翻译为“逗号分隔值”。CSV文件可以理解为以带逗号分隔(也可以是其他简单字符分割)的纯文本形式存储表格数据的文件。
  • 可以用记事本打开也可以用Excel打开
特征
  • 纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312;
  • 由记录组成,一行对应一条记录,每行开头不留空格;
  • 每条记录被英文半角分隔符(可以使逗号、分号、制表符等)分割为字段;
  • 每条记录都有同样的字段序列;
  • 如果文件包含字段名,字段名写在文件第一行;
  • 不包含特殊字符,文件中均为字符串。
操作
  • 针对CSV文件,Python提供了内置同名模块csv进行读写操作,读操作使用模块中的reader对象,写操作使用模块中的writer对象。
  • CSV文件进行读、写操作前也需要先打开文件。

import csv
with open(文件名,读写模式) as file对象名:
#读写操作

  • 用with子句打开的文件,当文件读操作结束后,系统自动调用close方法关闭文件。
读操作
  • 创建csv文件存入以下信息
import csv
with open("F:\code\编程\py\学习代码\savetext\stu.csv",'r') as stucsv:
	reader = csv.reader(stucsv)
	for row in reader:
		print(row)
  • 使用csv模块读取CSV文件数据
    先创建一个reader对象。
    然后通过迭代遍历reader对象读出文件中的每一行
  • 运行截图
写文件 writerow
import csv
with open("F:\code\编程\py\学习代码\savetext\stu.csv",'a') as stucsv:
	writer=csv.writer(stucsv)
	writer.writerow(['张芳','女','20'])
	writer.writerow(['王虎','男','18'])
  • 使用csv模块写CSV文件时
    使用writer对象的writerow方法按行写入。
    写入文件的一行内容要用列表存储
  • 运行结果截图
  • 记录之间出现了空行,读文件的时候可能会出错
import csv
with open("F:\code\编程\py\学习代码\savetext\stu.csv",'a',newline='') as stucsv:
	writer=csv.writer(stucsv)
	writer.writerow(['张芳','女','20'])
	writer.writerow(['王虎','男','18'])
  • 打开文件时增加一个参数“newline=‘’”,指明在写入新的记录后不插入空行
  • 运行结果截图
writerows
  • writerows方法只接受一个序列作为参数,可以是列表,也可以是元组
import csv
with open("F:\code\编程\py\学习代码\savetext\stu.csv",'a',newline='') as stucsv:
	writer=csv.writer(stucsv)
	writer.writerows([['刘伟','男','30'],['小虎','女','68']])
  • csv模块也可以使用writerows方法依次写入多行:
    将要写入文件的每一行存储在一个列表中
    将每一个列表依次作为元素组成一个新序列
    将带有嵌套列表元素的序列作为参数使用writerows方法
  • 运行结果截图
练习
  • 生成的通信录字典创建“通信录.csv”文件;然后在程序中查询大王的手机号、QQ号和微信号。

import csv
with open("F:\code\编程\py\学习代码\savetext\stu.csv",'r') as txlcsv:
	reader = csv.reader(txlcsv)
	for row in reader:
		if row[0]=='大王':
			res=row
			break
print("大王的手机号是:",res[1])
print("大王的QQ号是:",res[2])
print("大王的微信号是:",res[3])
  • 运行截图
异常和异常处理 简介
异常名称描述
Exception常规异常的基类
ZeroDivisionError除数为零
IOError输入/输出操作失败
IndexError序列中没有此索引
KeyError映射中没有这个健
NameError未声明/初始化对象(没有属性)
  • 影响了程序的正常执行 导致程序非正常终止
处理
  • try子句专门用来进行异常的捕捉与处理:

     try:
     	语句
     except 异常名称:
     	捕获异常时处理
     else:
     	未发生异常时处理
    
  • 程序执行时
    如果try子句中发生了指定的异常,则执行except子句部分进行异常的处理;
    如果try子句执行未发生异常则执行else子句部分。

try:
	a = int(input("a="))
	b = int(input("b="))
	c = a / b
except ZeroDivisionError:
	print("除数不能为0!")
else:
	print("c=", c)
  • 运行截图

  • 读取并输出某盘下data2.txt文件内容,如果文件不存在则提醒用户先创建文件。
    (题目要求读出 文件内容,需要用读模式打开,但是如果文件不存在系统会报错,所以需要进行IOError异常的捕获和处理。)
try:
	file = open("F:\code\编程\py\学习代码\savetext\data2.txt", 'r')
except IOError:
	print("data2.txt文件不存在,请先创建!")
else:
	text = file.read()
print("data2.txt内容:n", text)
file.close()
  • 运行截图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/884420.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号