之前文章将python基础语法
同时也与java对比其中的写法区别
open
(file_name,mode,encoding)
- 参数一: (文件名(具体路径)
- 参数二: 打开模式
- 参数三: 编码集
file = open("pzy.txt", mode='r', encoding='utf-8')
print(type(file)) # <class '_io.TextIOWrapper'>
read
(字节数量)读取文件 多次read 会继续上一次的位置进行读取(也就是继续读)
readline()
读取一行(如果上面指针到最后了 读取的数据就会为空列表)
file.seek(0)
# 将指针回归到初始位置 不受上面程序影响
lines = file.readline()
print(type(lines)) # <class 'str'>
print(lines)
查看每行数据
for line in file:
print(type(line)) # <class 'str'>
print(f"每行的数据是: {line}")
readlines()
全部读取使用如下
lines = file.readlines()
print(type(lines)) # <class 'list'>
print(lines)
ps: 线程休眠方法
sleep
(秒)
使用如下
lines = file.readlines()
print(type(lines)) # <class 'list'>
print(lines)
write()
文件的写入文件 不存在:创建 存在:覆盖 (w写 r读 a追加)
方法一:
# 方法一:
t = open("pzy1.txt", mode='w', encoding='utf-8')
t.write("pzy1 !!!")
# t.flush() # 写close不写也可以
t.close()
方法二:
这种不需要close
with open("pzy1.txt", mode='w', encoding='utf-8') as file:
file.write("pzy pzy!!!")
write()
文件的追加with open("pzy1.txt", mode='a', encoding='utf-8') as file:
file.write("+ pzy pzy!!! \n123")
处理python程序
运行中
的异常
java是RuntimeException
可以throw或者try catch finally/lombok注解/全局异常处理等等
try与except, 代码如下
try:
t = open("D:/pzy.txt", "r", encoding="utf-8")
except:
print("出现异常, 因为文件不存在")
t = open("D:/pzy.txt", "w", encoding="utf-8")
捕获指定的异常 ZeroDivisionError NameError
try:
print(1/0)
print(name)
except ZeroDivisionError as e:
print(f"分母不能是0,{e}") # 变量未被定义,division by zero
except NameError as e:
print(f"变量未被定义,{e}")
2.1.2方法的
简化版本
try:
print(1 / 0)
except (ZeroDivisionError, NameError) as e:
print(f"分母不能是0,{e}") # 变量未被定义,division by zero
Exception任意异常捕获
try:
print(1 / 0)
except Exception as e:
print("任意异常捕获~~~")
else逻辑
try:
print("hello pzy")
except Exception as e:
print("任意异常捕获~~~")
else:
print("没有异常")
(比如
关流
操作)不管是否正确
执行 都需要关闭流
try:
print(1 / 0)
except ZeroDivisionError as e:
print("任意异常捕获~~~")
else:
print("没有异常")
finally:
print("我是必然执行的")
test03-> test02 ->test01 一层层传递
def test01():
print("方法一开始")
num = 1 / 0
print("方法一结束")
def test02():
print("方法二开始")
test01()
print("方法二结束")
def test03():
print("方法三开始")
test02()
print("方法三结束")
test03()
简介: module模块 = python文件, 以.py结尾, 模块能定义函数 类和变量, 同时能包含可执行代码
from 包 import 方法 as 别名
- 仅要time模块下的
sleep
功能- as 可以给sleep
起别名
- 表示
全部
from time import sleep as pzy
print("程序开始~~~")
sleep(5)
pzy(5)
print("程序结束~~~")
import 包 as 别名 : 导包
(时间)
[整包]
import time as pzy
print("程序开始~~~")
# time.sleep(5)
pzy.sleep(5)
print("程序结束~~~")
如上图所示: 依次创建两个文件 pzy_module.py和 pzy_module2.py
文件一:
# 数字相加
def add(a, b):
print(a + b)
# 数字相减
def sub(a, b):
print(a - b)
# 数字相乘
def multiply(a, b):
print(a - b)
# 数字相除
def divide(a, b):
print(a - b)
# python中的main方法 在if条件中
# java是必须有main方法 而python可以没有main方法执行
# __name__ 是python的内置变量名 运行就会被标记为__main__
if __name__ == '__main__':
add(1, 2) # 3
文件二:
"""
自定义模块module
"""
# 数字相加
def add(a, b):
print("我是假的add, 我在module2中")
print(a + b)
# 数字相减
def sub(a, b):
print("我是假的sub, 我在module2中")
print(a - b)
2.4.1中的包进行引用
import pzy_module as pzy
pzy.add(1, 2)
2.4.1中的包进行引用
from pzy_module import sub
sub(2, 1)
两个module
方法名相同
时, 后面的直接覆盖
方法:
这里只执行了module2方法 1是灰色的
from pzy_module import sub
from pzy_module2 import sub
sub(2, 1) # 我是假的sub, 我在module2中
python代码图示
__all__
变量的使用设置可以对外的方法:
__all__ = ["add", "sub", "multiply"]
"""
自定义模块module
1. 函数定义及引用
2. __main__ 变量使用: 可用于函数测试
3. __all__ 变量使用: 可以用于all测试
"""
# 设置可以访问的函数名
__all__ = ["add", "sub", "multiply"]
# 数字相加
def add(a, b):
print(a + b)
# 数字相减
def sub(a, b):
print(a - b)
# 数字相乘
def multiply(a, b):
print(a - b)
# 数字相除
def divide(a, b):
print(a - b)
这时候试试四个方法 看看哪个不能使用了
ps: (只对*
有影响)
from pzy_module import *
add(2, 1)
sub(2, 1)
multiply(2, 1)
# divide(2, 1) # 报错了 不允许使用
__all__
是否会对直接import
模块有影响结果: 没有影响,
只对from 模块 import *
有影响
方法可以正常使用
import pzy_module as zzz
zzz.divide(4, 2)
__init__
.py使用方式只要是创建python的package 默认带这个__init__.py
是python包 同时可以控制import*
具体简介就不写了 大家看看其他文章
传送门: ===>__init__.py
的简介 <===
使用请看下面案例3.3.4
总结案例
txt文件 内容如下:
随便写
1今天天气挺好 aaa bbb ccc ddd eee fff
2今天天气不错 aaa bbb ccc ddd eee fff
3今天天气不错 aaa bbb ccc ddd eee fff
4今天天气不错 aaa bbb ccc ddd eee fff
5今天天气不错 aaa bbb ccc ddd eee fff
6今天天气不错 aaa bbb ccc ddd eee fff
7今天天气不错 aaa bbb ccc ddd eee fff
8今天天气不错 aaa bbb ccc ddd eee fff
9今天天气不错 aaa bbb ccc ddd eee fff
count = 0
with open("pzy.txt", mode='r', encoding='utf-8') as file
for line in file:
print(f"每行的数据是: {line}")
count += line.count("今天天气")
print(count)
with open("pzy.txt", mode='r', encoding='utf-8') as file:
content = file.read()
print(content.count("今天天气"))
方法一: 开启两个流 一个读,条件符合就写 然后
统一flush
推送关流
inputStr = input("输入信息: \n")
t = open("caseTest1.txt", mode='w', encoding='utf-8')
with open("caseTest.txt", mode="r", encoding='utf-8') as file:
for line in file:
if line.count(inputStr) > 0:
print(line)
t.write(f"{line}")
t.flush()
方法二: 放入
列表
中 然后列表遍历存入文件
inputStr = input("输入信息: \n")
list01 = []
with open("caseTest.txt", mode="r", encoding='utf-8') as file:
for line in file:
if line.count(inputStr) > 0:
print(line)
list01.append(line)
with open("caseTest1.txt", mode="w", encoding='utf-8') as file:
for str1 in list01:
file.write(str1)
print("保存结束!")
input("等待!!!")
- 新建pzy_package 里面必须有__init__.py
2. 复制pzy_module.py和复制pzy_module2.py
3. 粘贴到pzy_package内
4. 改名(改成任意心动的名字~~~)
直接导包方法
import pzy_package.pzy_package_module
import pzy_package.pzy_package_module2
# 模块1
pzy_package.pzy_package_module.divide(4, 2)
# 模块2
pzy_package.pzy_package_module2.add(2, 1)
from包 import 模块
from pzy_package import pzy_package_module
from pzy_package import pzy_package_module2
pzy_package_module.divide(4, 2)
pzy_package_module2.add(2, 1)
更加细致 用哪个方法import哪个
from pzy_package.pzy_package_module import divide
from pzy_package.pzy_package_module2 import add
divide(4, 2)
add(1, 2)
[仅对
from + import *
有效] <测试时 请注释掉其他代码>
from pzy_package import *
pzy_package_module.divide(4, 2)
# pzy_package_module2.add(1, 2) # 直接报错了
python程序的生态(三方包)
- 数据分析计算
numpy
pandas- 大数据计算
pyspark
apache-flink包- 图形可视化 matplotlib
pyecharts
- 人工智能 tensorflow Scikit-learn pytorch
- web服务
Django
Flask(轻量) Tornado- 爬虫
Requests
scrapy beautiful-soup
快捷传送门: ===> python总结比较全的三方库简介 <==
本文主要介绍
- 文件的基本操作, 读取与写出
- 导包的不同方式
- 包 模块 方法的区别及使用
- 三方类库总结
传送门: ===> 文件操作的综合案例 <===
作者pingzhuyan 感谢观看