python求道07日
一、文件操作
1.只读模式 ‘r‘
使用函数open打开文件,
f=open(‘你才是一个大傻子‘,mode=‘r‘,encoding=‘utf-8‘) ll=f.read() print(ll) f.close()
具体使用方法为文件路径+打开形式+打开编码方式
文件路径分为绝对路径和相对路径,用绝对路径创建文件时会默认编码方式,得自己查询,如果打开时不用相对应的编码方式,将会出现报错,相对路径则不会有这种困扰
如上述例子中即是在python中创立了一个文件,是相对路径,其绝对路径是C:\Users\Administrator\PycharmProjects\untitled\day1\你才是一个大傻子(使用右键菜单中copy path一选项)
整体形式如上,使用后要关闭,不然会一直占用内存
2.只写模式
对于w,要是没有文件就会自行创建文件,要是有文件就会把文件的内容删掉以后重写
举上面这个例子
f=open(‘你才是一个大傻子‘,mode=‘w‘,encoding=‘utf-8‘) f.write(‘警察来了,快跑‘) print(f) f.close()
现在txt里的内容就变成了(警察来了,快跑)需要注意的时,写操作并不能赋予一个新的变量,一旦赋予,print出来的东西将是txt中字符的数量
写操作一出,就这就引出了追加功能(‘a’),即在写好的文档后面添加字
3.可读可写‘r+‘
在可读可写模式中,计算机十分死板,只能操作两步,即先读,读完以后写,然后文件就处于不可使用状态,再后面使用读函数就不能读了
f=open(‘你才是一个大傻子‘,mode=‘r+‘,encoding=‘utf-8‘) print(f.read()) f.write(‘警察来了,快跑‘) f.close()
4.按照这个推理,则会有W+模式,a+模式,另外,设计到光标,则会有一个移动光标函数,为 f.seek()
在文件操作当中,read函数是按照字符去读文件的,所以不管是英文还是中文,都不会出什么差错,但是seek移动光标的时候是按照字节定义光标的位置的,每个中文是由三个字节表示,一旦光标订错,那就会读错.
既然涉及到移动光标,肯定有查找现在光标位置函数,为f.tell()
5.另外,read还有一个新的函数readline,这个函数也是读的意思,不过是一行一行的读,即使用一次函数读一行,再使用一次读下一行,readlines则是把每一行字符当成一个一个列表里的元素,然后组成一个新列表(可结合for循环将文章中内容打印出来),具体表示如下
f=open(‘你才是一个大傻子‘,mode=‘r‘,encoding=‘utf-8‘) print(f.readline()) print(f.readline()) print(f.readline()) f.close()
6.忘写文件关闭语句,所以有一种新的打开方式,会自动关闭文件
with open(‘你才是一个大傻子‘,mode=‘r‘,encoding=‘utf-8‘)as f: line=f.readlines() print(line) f.close()
注意第二行开始的缩进和第一行后面的冒号不能省略,后面的f是把这个文件命名为f的意思,相当于一个句柄
7.python之文件修改
python里面没有修改文件的函数,所以由一下思路来进行文件修改
1.打开要修改的文件和一个新文件
2.使用for循环查遍要修改文件里的字符,
3.使用replace函数将其替换成要修改的字符,
4.使用remove删除函数删除原文件,使用rename重命名函数将要新文件改名成老文件
具体操作如下
with open(‘人民的名义‘,mode=‘r‘,encoding=‘utf-8‘)as f,open(‘人民的名义.改‘,mode=‘w‘,encoding=‘utf-8‘)as f2: for line in f: if ‘庹联军‘ in line: line=line.replace(‘庹联军‘,‘庹丹‘) f2.write(line) import os os.remove(‘人民的名义‘) os.rename(‘人民的名义.改‘,‘人民的名义‘)