标签:匹配 作文件 flow 数据类型 操作 执行 exception 分类 json格式
1、掌握外部文件读取和存储各类方法。
2、掌握异常的处理办法。
3、掌握外部模块导入和调用的方法。
实际应用中,我们绝大数的数据都是通过文件的交互完成的。
文件的打开通用格式
with open("文件路径","打开模式",encoding = "操作文件的字符编码") as f: # 对文件进行相应的读写操作
- ①文件路径:程序与文件在同一文件夹,可简化成文件名
- ②打开模式:
- "r" 只读模式,如文件不存在,报错
- "w" 覆盖写模式,若文件不存在,则创建;若文件存在,则完全覆盖原文件
- "x" 创建写模式,若文件存在,则报错,若不存在则创建
- "a" 追加写模式,若文件不存在,则创建,若存在则在原文件后追加内容
- "b" 二进制文件模式,不能淡入使用,需要配合使用如"rb" "wb" "ab",该模式不需指定encoding
- "t" 文本文件模式,默认值,需配合使用如"rt" "wt" "at"
- "+" 与"r" "w" "x" "a"配合使用,在原功能基础上,增加读写功能
- 打开模式缺省,默认为只读模式- ③字符编码:
- utf-8:万国码,包含全世界所有国家需要用到的字符
- gbk:中文编码,专门解决中文编码问题,Windows系统,如果缺省,则默认gbk(所在区域的编码),建议除处理二进制文件,建议不要缺省encoding
使用with块的好处:执行完毕后,自动对文件进行close操作
with open("E:\ipthon\测试文件.txt","r",encoding="gbk") as f: # 打开文件
text = f. read() # 读取文件
print(text)
with open("三国演义片头曲_gbk.txt","r",enconding="gbk") as f:
for text in f: # f本身就是一个可迭代对象,每次迭代读取一行内容
print(text)
ls = ["春天刮着风", "秋天下着雨", "春风秋雨多少海誓山盟随风远去"]
with open("恋雨1980.txt", "w", encoding="utf-8") as f:
f.writelines(ls)
with open("浪淘沙_北戴河.txt", "r+", encoding="utf-8") as f:
# for line in f:
# print(line) #遍历文件f,指针达到结尾
f.seek(0, 2) # 或者可以将指针移到末尾f.seek(偏移字节数,位置(0:开始;1:当前位置;2:结尾))
text = ["萧瑟秋风今又是,\n", "换了人间,\n"]
f.writelines(text)
with open("浪淘沙_北戴河.txt", "w+", encoding="utf-8") as f:
text = ["萧瑟秋风今又是,\n", "换了人间,\n"] # 清空原内容
f.writelines(text)
f.seek(0, 0) # 指针移到开始
print(f.read())
"a+":若文件不存在,则创建;指针在末尾,添加新内容,不会清空原内容
通用的数据格式,可以在不同语言中加载和存储,主要了解数据存储结构csv和json
csv格式由逗号将数据分开的字符序列,可以由excel打开
with open("成绩.csv","r",encoding="gbk") as f:
ls = []
for line in f:
ls.append(line.strip("\n").split(",")) #去掉每行的换行符,并用","进行分割返回列表
for res in ls:
print(res)
ls = [["编号", "数学成绩", "语文成绩"], ['1', '100', '98'], ['3', '97', '95']]
with open("score.csv","w",encoding="gbk") as f: # encoding="utf-8"中文出现乱码
for row in ls:
f.write(",".join(row)+"\n") # 逐行写入.用逗号组合成字符串形式
也可借助csv模块完成上述操作
常用来存储字典格式
scores = {"Petter": {"math": 96, "pysics": 98},
"Paul": {"math": 92, "pysics": 99},
"Mary": {"math": 98, "pysics": 97}}
with open("score.json", "w", encoding="utf-8") as f:
# indent:表示字符串换行+缩进 ensure_ascii=False 显示中文
json.dump(scores, f, indent=4, ensure_ascii=False)
with open("score.json", "r", encoding="utf-8") as f:
scores = json.load(f) # 加载整个对象
for k, v in scores.item():
print(k, v)
当异常发生的时候,如果不预先设定处理方法,程序就会中断
提高程序的稳定性和可靠行
如果try内代码块顺利执行,except不被触发;如果try内代码块发生错误,触发except执行except内代码块
x = 10
y = 0
try:
z = x/y
except ZeroDivisionError:
print("0不可以被除")
d = {"name": "大杰仔"}
try:
d["age"]
except NameError:
print("变量名不存在")
except IndexError:
print("索引超出界限")
except KeyError:
print("键不存在")
ls = []
d = {"name": "大杰仔"}
try:
y = x
ls[3]
d["age"]
except Exception as e:
print(e)
try_except_finally:不论try模块是否执行,finally都会被执行
已经被封装好,无需自己再"造轮子",声明导入后拿来即用
③自定义文件:文件夹内有多个py文件,再加一个__init__.py文件(内容可为空)
导入模块中所有的类和函数—— from 模块 import *
import sys
print(len(sys.modules))
print("math" in sys.modules)
print("numpy" in sys.modules)
for k,v in list(sys.modules.items())[:5]:
print(k, ":", v)
"""
875
True
True
sys : <module 'sys' (built-in)>
builtins : <module 'builtins' (built-in)>
_frozen_importlib : <module 'importlib._bootstrap' (frozen)>
_imp : <module '_imp' (built-in)>
_thread : <module '_thread' (built-in)>
"""
import sys
sys.path.append("C:\\User\\ibm\\Desktop") #注意是双斜杠
import fun3
fun3.f3()
标签:匹配 作文件 flow 数据类型 操作 执行 exception 分类 json格式
原文地址:https://www.cnblogs.com/lyszyl/p/12266917.html