标签:png python 换行符 进度 参数 控制 没有 个数 缺省值
完整版是:
open(file,mode=’r’,buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
用来打开文件, 根据参数来创造一个文件对象.
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型
opener:
通过位置传参, 没有缺省值, 所以是必须由我们输入的参数.
可以写相对路径或者是绝对路径, 就是打开这个文件.
f = open(‘D:/test.txt‘)
这个是以什么模式来打开这个文件
mode 参数有:
模式 | 描述 |
---|---|
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(不推荐)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
这是参数只能在文本模式下使用, 可以把没有被编码的文件内容, 按照encoding指定的编码表来编码.
Windows系统下默认的编码表GBK.
‘utf8’和’utf-8’的意思是一样的.
一般在打开文件的时候, 把encoding写上, 是一个好习惯.
先要声明, 在操作文件的时候, 有一个指针的概念, 有点类似于word或者txt里面的光标, 指针就是指明当前的位置在哪.
读取文件的内容, size控制读取的字符个数或字节个数;
读完之后, 指针会指导尾部.
f=open(‘xxx.txt‘,‘r‘,encoding=‘utf8‘) data=f.read(5)
给文件添加一些文本, ‘t’模式下写字符, ‘b’模式下写字节, 是在指针所在处往后写, 会覆盖后面的内容.
写完返回写入的字符数或者字节数个数.
f=open(xxxx‘,‘w‘,encoding=‘utf8‘) f.write()
关闭打开的文件, 文件用完了一定要关闭, 不然文件描述符不够用.
f=open(‘xxx‘,‘r‘,encoding=‘utf8‘) f.close()
注意是没有括号的, 用来判断这个文件是否关闭.
关闭了返回True, 没关闭返回False.
设置指针的位置;
whence的值, 0代表文件开头, 2代表文件尾部, 1表示相对于当前位置.
pos是走多少步, 在文本模式下, 在1,2(也就是相对位置和尾部)不能走非0的pos, 就是不能动.
只有在字节模式下, 才能从后往前走, 就是pos为负数.
seek()不允许在0, 就是开始位置, 把指针向左移动
文件指针和字符无关, 指针每移动一步, 都是移动一个字节
文本模式, 读写操作的都是字符
字节模式, 读写操作的都是字节
f.seek(0)# 移动光标到指定的位置print(f.read(4))
查看指针的位置, 是当前位置, 按字节来数.
print(f.tell())# 取出光标位置print(f.read(2))print(f.tell())
一行一行的读,
size控制读几个字符,
立即返回一个列表
print(f.readline())print(f.readline())#无论是read()还是readline(),光标会发生位置变化
把所有行显示出来,
放在一个列表里面,
hint控制读几行.
print(f.readlines())#[‘昨夜寒蛩不住鸣。\n‘, ‘惊回千里梦,已三更。\n‘, ‘起来独自绕阶行。\n‘, ‘人悄悄,帘外月胧明。\n‘, ‘白首为功名,旧山松竹老,阻归程。\n‘, ‘欲将心事付瑶琴。\n‘, ‘知音少,弦断有谁听。‘]
#实例打印文件 data=f.readlines()#注意及时关闭文件f.close() number = 0for i in data: number += 1 if number == 6: i = ‘‘.join([i.strip(), ‘iiiii‘]) # 取代万恶的+ print(i.strip())f.close()
把列表补进去
列表内元素必须是str
\n得自己补上
查看文件对象的文件描述符
还可以吧文件对象直接看成一个迭代器使用
number=0 for i in f:#这是for内部将f对象做成一个迭代器,用一行去一行。 number+=1 if number == 6: i = ‘‘.join([i.strip(), ‘iiiii‘]) # 取代万恶的+ print(i.strip()) print(i.strip())
with 同时管理多个文件对象 with open(‘log1‘,‘r‘) as f_read, open(‘log2‘,‘w‘) as f_write: for line in f_read: f_write.write(line)
可以不用close()
ext:
1.进度条实例
#flush():同步吧将数据从缓存转移到磁盘上去
##进度条实例
import sys,time
for i in range(30):
sys.stdout.write("*")
sys.stdout.flush()
time.sleep(0.1)
#print的flush
import sys,time
for i in range(30):
print(‘*‘,end=‘‘,flush=True)
time.sleep(0.1)
2.truncate()截断函数
#truncate():截断数据(不能在r模式下) #在w模式下:先清空,再写,再截断 #在a模式下:直接将指定位置后的内容截断 f.truncate(5) f.write(‘hello world‘) f.truncate(5) f.close()
3.终极问题 如何在磁盘修改文件
# 常规思路,由于磁盘存储机制不能完成 number=0 for line in f: number+=1 if number==3: f.write(‘alex‘) #只能采取重新创建一个文件的思路 f_read=open(‘小重山‘,‘r‘,encoding=‘utf8‘) f_write = open(‘小重山2‘,‘w‘,encoding=‘utf8‘) number=0 for line in f_read: number+=1 if number==5: line=‘‘.join([line.strip(),‘alex\n‘]) line=‘hello 岳飞\n‘ f_write.write(line)f_read.close() f_write.close()
4.关于python文件编码
标签:png python 换行符 进度 参数 控制 没有 个数 缺省值
原文地址:https://www.cnblogs.com/-qing-/p/10752617.html