目录
一、文件操作
文件的读取操作
# 打开文件
f = open("E:/test.txt", 'r', encoding = "UTF-8")
# 读取文件-read
#print(f"读取十个字节:{f.read(10)}")
#print(f"读取全部内容:{f.read()}")
# 读取文件-readlines
#lines = f.readlines()
#print(f"读取全部内容:{lines}")
# 读取文件-readline
"""
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
line4 = f.readline()
print(f"第1行内容为:{line1}")
print(f"第2行内容为:{line2}")
print(f"第3行内容为:{line3}")
print(f"第4行内容为:{line4}")
"""
# for循环读取文件
#for line in open("E:/test.txt", 'r', encoding="UTF-8"):
# print(f"每一行的内容为:{line}")
# 文件的关闭
#f.close()
# 语法操作文件 执行完内容后会自动关闭文件
with open("E:/test.txt", 'r', encoding = "UTF-8") as f:
for line in f:
print(f"每一行的内容为:{line}")
文件的写入操作
write函数
如果文件不存在,会创建一个文件,如果文件已经存在,那么他会把文件内容清空,再写入
打开文件之后,调用写入函数后,写入的内容不会直接写入文件,而是会暂时放在一块缓存区中,直到调用了flush函数或者close关闭文件之后,这个内容才会写入文件
# 打开文件
f = open("E:/test.txt", 'w', encoding='UTF-8')
# 写入内容
f.write("Hello World!!")
# 刷新内容
f.flush()
# 关闭文件
f.close()
文件操作综合案例
将test文件中的内容写入到test02中,消费金额为200的不要
f1 = open("E:/test.txt", 'r', encoding='UTF-8')
f2 = open("E:/test02.txt", 'w', encoding='UTF-8')
# 操作
for line in f1:
line = line.strip()
if line.split(",")[2] == '200': # 注意,文档中是中文输入法逗号
continue
else:
f2.write(line)
f2.write('\n')
f1.close()
f2.close()
二、异常
异常的捕获
"""
# 异常基本语法
try:
f = open("E:/abd.txt", 'r', encoding='UTF-8')
except:
print("出现错误,原因是文件不存在,我将以'w'的方式打开文件")
f = open("E:/abd.txt", 'w', encoding='UTF-8')
# 捕获指定异常
try:
print(name)
except NameError as e:
print("出现变量未定义异常")
print(e) # e是异常原因 name 'name' is not defined
# 捕获多个异常
try:
#print(name)
1/0
except(NameError, ZeroDivisionError):
print("出现变量未定义或者除0异常")
"""
# 异常的else 和 finally
try:
f = open("E:/abc.txt", 'r', encoding='UTF-8')
except:
print("出现异常")
f = open("E:/abc.txt", 'w', encoding='UTF-8')
else:
print("没有出现异常")
finally:
print("finally:有没有异常都要执行")
f.close()
异常的传递性
异常会从func1->func2->main一层一层传递
def func1():
print("func1开始执行")
1/0
print("func1执行结束")
def func2():
print("func2开始执行")
func1()
print("func2执行结束")
def main():
try:
func2()
except Exception as e:
print(f"异常的原因是:{e}")
main()
"""
func2开始执行
func1开始执行
异常的原因是:division by zero
"""
三、模块
模块就是一个python文件,里面有类、函数、变量等,我们可以拿过来用(导入模块使用)
模块的导入方式:
# import
# import time
# print("How are you")
# time.sleep(5)
# print("I'm fine, thank you")
# from
# from time import sleep
# print("How are you")
# sleep(5)
# print("I'm fine, thank you")
# from time import * # *表示全部
# print("How are you")
# sleep(5)
# print("I'm fine, thank you")
# 使用as给特定功能加上别名
# import time as t
# print("How are you")
# t.sleep(5)
# print("I'm fine, thank you")
from time import sleep as s
print("How are you")
s(5)
print("I'm fine, thank you")
四、python包
怎么安装第三方包
在控制台输入
pip install 包名
这种方法是在国外的网站去安装,网速会比较慢
可以采用如下方法
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
结果如下:
测试包是否安装成功
在控制台的python环境中,输入import 包名
在pycharm中安装第三方包
在pycharm中单击右下角的python版本号,在弹出来的界面点击“+”,进入如下界面,
因为这也是在国外网站下载,所以比较慢,勾选Options,输入清华大学提供的网站。
五、综合案例
file_util.py
# 接收传入文件的路径,打印文件内容,如文件不存在则捕获异常,输出提示信息
# 通过finally关闭文件对象
def print_file_info(file_name):
f = None
try:
f = open(file_name, 'r', encoding='UTF-8')
print(f.read())
except:
print("文件不存在")
finally:
if f:
f.close()
# 接收文件路径以及传入数据,将数据追加写入文件中
def append_to_file(file_name, data):
f = open(file_name, 'a', encoding='UTF-8')
f.write(data)
f.close()
str_util.py
# 接收传入字符串 将字符串反转返回
def str_reverse(s):
s1 = s[::-1]
return s1
# 按照下标x和y,对字符串进行切片
def substr(s, x, y):
s1 = s[x: y]
return s1
main.py
import my_utils.str_util
import my_utils.file_util
str1 = my_utils.str_util.str_reverse("hello")
print(str1)
str2 = my_utils.str_util.substr("hello", 1, 4)
print(str2)
# my_utils.file_util.print_file_info("E:/tes.txt")
my_utils.file_util.append_to_file("E:/test01.txt", "hello")