python的第七节课笔记(基础提升)
我们之前编写代码都是用变量接收存储数据,但是变量是存在于运行内存中的,程序结束变量就被释放掉了。现在要想把程序运行的结果永久保存下来该怎么办呢?于是我们要把数据保存到文件之中。
文件操作总览:
文件操作:
文件的打开:
1 2
| 相对路径: 相对于当前位置而言,要找到目标文件所进过的路程 绝对路径: 从根目录(盘符)触发,要找到目标文件所进过的路程
|
open()函数语法 |
f = open(文件路径, 操作模式, 编码方式) |
文件路径 |
相对路径:test15 绝对路径:D:\LiuMupy\cls15\09文件与模块\test15.txt 复制绝对路径:右击文件名—>copy–> Absolute Path |
编码方式 |
encoding=”utf-8” 指定编码方式 |
1 2 3 4 5
| f = open("text.txt", mode="r", encoding="utf-8")
data = f.readlines() print(data)
|
w 只写模式 ,覆盖写入,不存在则新建,存在则打开 |
1 2 3 4 5 6
| f = open("text.txt", "r") f = open("text.txt", "w", encoding="utf-8") f.write("小鲸鱼") f.writelines(["子良\n", "常在", "老蒋"]) print(f.writable()) print(f.readable())
|
a 追加写入,写入方式与w一致,不会覆盖原来的数据 |
1 2 3
| f = open("text.txt", "a", encoding="utf-8") f.writelines(["子良\n", "常在", "老蒋"]) f.write("\n搞钱小秘书")
|
+模式在原来的模式上面添加新的 r 或者 w 功能 |
注意:
- r+ 在读取的基础上增加写入
- w+ 在写入的基础上增加读取 (覆盖写入)
- a+ 在写入的基础上增加读取 (追加写入)
- 谁在前面就以谁为主
1 2 3 4
| f = open("text.txt", "r+") f = open("text.txt", "w+") print(f.readable()) print(f.writable())
|
rb 读取图片,图片、音频、视频等在计算机中存储为二进制 |
1 2
| f = open("5200.jpg", "rb") print(f.read())
|
文件的读取:
data = f.read() |
读取并返回所有文件内容 |
data = f.readline() |
读取并返回单行内容 |
data = f.readlines() |
去读多行并使用列表形式进行返回,换行使用\n表示 |
文件的写入:
f.write(“小鲸鱼”) |
写入单条 |
f.writelines([“子良\n”, “常在”, “老蒋”]) |
写入多条, 换行需要手动添加换行符\n |
文件的关闭:
f.close() |
关闭文件 |
f.flush() |
刷新文件 |
1 2 3 4
| #上下文管理器 操作完毕之后会自动关闭文件
with open(文件名,模式,编码方式) as 变量名: 变量名.方法()
|
1 2
| with open("text.txt", "r", encoding='utf-8') as f: print(f.readlines())
|
1 2 3 4 5 6 7 8 9 10
| """ 光标(指针) f.tell() 查看当前指针位置 f.read(10) 读取,读取的是字符个数 """ f = open("text.txt", "a+", encoding='utf-8') f.write("\n乖乖") f.seek(0) print(f.tell()) print(f.read(15))
|
文件流 io:
作用:反复的写入和读取数据或损耗磁盘读写次数,也非常麻烦,文件流生成的是一个临时假文件,并不会占用磁盘空间 |
1 2 3 4 5 6 7 8 9 10
| import io str_io = io.StringIO() str_io.write("宋志上") str_io.seek(0) print(str_io.read()) print(str_io.getvalue())
bt_io = io.BytesIO() bt_io.write(b"hello cls15") print(bt_io.getvalue())
|
os 模块 :
操作文件和文件目录(文件夹):
注意:
- 工作目录:这个文件在那个文件夹下面,这个文件夹的绝对路径就叫工作目录
- 每个人的电脑文件是不一样的,工作目录也不一样
1 2 3 4 5 6 7 8 9
| import os
print(os.getcwd())
os.chdir(r"D:\LiuMupy\cls15\08函数") print(os.getcwd()) print(os.listdir())
os.rename(r"test_new.py", r"D:\LiuMupy\test_new.py")
|
模块操作:
内置模块的导入:
|
语法 |
解释 |
调用 |
方式一: |
import 模块名 |
导入全部 |
模块名.方法名() |
方式二: |
from 模块名 import 方法名 |
指定导入 |
方法名() |
|
from 模块名 import * |
导入全部 |
模块名.方法名() |
方式三: |
from 模块名 import 方法名 as 别名 |
有时模块名字太长,可以起个别名导入 |
别名() |
1 2 3 4 5 6 7 8 9 10 11 12
| import Mode
Mode.fun1() Mode.fun2()
from Mode import fun1 fun1()
from Mode import fun1 as f1
f1()
|
注意:
Mode是你自己建的py文件,里面的函数也是你写的
要先创建Mode.py文件,你才能import Mode
因为这个是你自建的模块,所以会有红线,消除红线的方法是,找到你运行代码的文件夹,右键点进”Mark Directory as”文件名,
再点”Excluded“,红线就消失了
文件路径添加:
使用sys模块
sys.path |
查看可以导入模块的路径,查看引用模块时候的搜索路径,如果这里面都没有这个模块—报错 |
sys.path.append(path) |
添加其他的路径 |
1 2 3 4 5 6 7 8 9 10 11 12
| import sys
p = r"D:\LiuMupy\cls15\09文件与模块\Mode.py" li = sys.path li.append(p)
from Mode import fun1 fun1()
|
导入第三方库:
注意:
- 先下载(在cmd里面下载)
- pip install 模块名 -i 国内源
查看已有的模块(库) |
pip list |
卸载已有模块 |
pip uninstall 模块名 |
国内镜像源:
主函数:
1 2 3
| if __name__ == '__main__': print("这是我的主函数")
|
注意: