模式:r读w写a追加
文件地址有两类
从该程序文件出发,意思就是代码现在所处的那个文件出发
相对路径(例子):原来是在06文件里面,怎么进入05文件中的text3.py: ../05函数/ /(表示进入文件夹)
其中同级目录的./可以不写
绝对路径:
鼠标左键点击一下,出现的就是绝对路径(若是要操作的是test3.py,则要在绝对路径后面加上test3.py,即复制目录地址加文件名)
绝对路径可能只有你自己电脑上有,别人可能没有,那别人就打不开。所以推荐用相对路径打开
r 、w打开的文件,光标放在第一位,a模式光标是在最后面
a、w打开不存在的文件夹都不会报错,而且会新建一个文件夹,且若原文件存在,a是不会覆盖原文件
文件写入(也需要进行保存)w模式会覆盖之前内容(即把文件未打开前的内容删除,相当于一个新的文件夹),而a模式可以不断添加
发现没有写入成功,像python一样运行前,有星号,没保存,按F5先提示要保存再运行,保存后没星号。因为没有保存
这样就写入成功了 f.close()#保存并关闭
用a写入,多次运行,可以多次追加
若需要写多行时,需要把内容写在列表或字符串里面
得到的是一个文件的对象,可用一个变量去保存
文件读取(是从光标的位置后面开始读取)读取内容时,重复多个print,不会读取重复内容,读取一次后光标不会复原,光标会一直往后走
读取到的多行内容,读取到也是放在列表里面
把一个文件的内容全部读取出来,然后通过写入多行的方式,写入到另一个文件里
可读可写+模式(既可以读取,也可也写入)光标会随添加内容往后去移动,导致read读取不到东西,read读取,是从光标往后开始读取的
用f.seek(0)调整光标位置即可
B是一个二进制的数据
图片视频音频都是用二进制的格式去保存的,如果需要读取这些文件时,就需要二进制来读取这些文件的内容
r+模式打开的是一个字符类型,图片视频音频都是字节类型
加个B即可读取到
f.close需要手动去写
自动关闭用with open(自动打开并关闭),不用再写f.close()关闭
以上代码需要全部掌握
文件流(写图片验证码可以用)(现在了解即可,后面爬虫会继续讲)相当于是一个虚拟的文件,将数据临时保存在内存当中进行操作,不会生成持久化文件(在磁盘里可以看到的)讲项目自己单独开发一个网站出来,用户登录我们网站时,需要验证码登录,用python生成图片验证码,每次登录注册都生成这个图片。用python去画出这个验证码,保存在内存当中,当他把程序关掉的时候,就会释放内存,图片就会被垃圾回收掉了。(跟数据库差不多)
分为两个管道
一个用来保存二进制的图像音频和视频
一个用来保存文件这些
用文件流需要导入模块import io
可以对虚拟文件进行写入,虚拟文件用不到打开,因为每一次打开都相当于创建了一个新的虚拟文件出来,所以就不分aw那些模式了,直接写入就行
文件流直接用getvalue就好了,不需要修改光标的位置
写字节文件时,写入记得要加b,修改二进制一定要记得加b
现在文件流只需要知道怎么打开,修改,关闭它就行
调用方法时,注意要加括号
文件目录的操作进行文件目录的操作,需要导入模块os(操作电脑上文件)
通过os模块可以获取到当前我们在操作的文件的目录
切换工作文件的目录os.chdir,r进行取消转义,只是暂时的对他进行操作,并不是真的把它移过去了,只是在内存里面对他进行操作,只是修改操作的目录,修改了操作路径
创建文件夹os.mkdir('文件夹名')
删除文件夹os.rmdir('文件夹名‘)
创建多层目录os.makedirs(r'第一层下一层下一层’) 可以两个斜杠取消转义'第一层\下一层\下一层’
删除多层目录os.makedirs(r'第一层下一层下一层’)
文件夹里面有内容的话,就不可以删除,删除只能删除空的文件夹,
遍历文件夹(遍历是先在把一个页面的文件夹打开,再从第一个一级一级打开,然后打开第二个)os.walk() 返回的是一个对象,想要看到它,就需要对他进行转列表
移除文件,移除文件夹里面的文件os.remove()
修改文件名字os.rename('原',‘新’)
join拼接(拼接网址)
模块(文件)和包(文件夹) 导入模块:import python文件名 使用模块里面的方法:模块名.函数名()
部分导入,即不需要模块里面的全部方法,直接函数名就可以了,不需要再写模块名
函数名字太长,用as函数名重命名
时间模块(包.模块.方法())
测试项目是否有问题
包:
from 包 import 模块
注意从C导入B 的方法
同级下一个点,若是模块e导入B的话,则要回到上级目录才能导入 from..B import 方法,只能找到上一级,不能一直往上找,不能找到A外面的,有文件才能被导入,不能从网上直接导入



