一、"r" ,"w" ,"a" 三种模式(mode)
一般地,为了避免文件的浪费,使用with open("fileName") as f
f = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
模式 | 描述 |
---|---|
b | 二进制模式 |
r | 以只读方式打开,指针放在文件开头 |
r+ | 读写方式打开,指针放在文件开头 |
rb | 已二进制打开一个文件,只读 |
rb+ | 二进制打开一个文件,读写 |
w | 写的方式打开一个文件,如果文件已经存在,则会被clear,如果不存在,会创建一个文件 |
w+ | 读写的方式打开一个文件,如果文件已经存在,则会被clear,如果不存在,会创建一个文件 |
wb+ | 读写的方式打开一个二进制文件,如果文件已经存在,则会被clear,如果不存在,会创建一个文件 |
a | 追加的方式打开文件,如果文件已存在,指针会放在文件末尾,否则创建一个文件 |
a+ | 追加的方式打开文件,如果文件已存在,指针会放在文件末尾,否则创建一个文件 |
ab+ | 追加的方式打开二进制文件,如果文件已存在,指针会放在文件末尾,否则创建一个文件 |
其他参数:
- buffering:设置缓冲
- encoding:编码格式
- errors:报错级别
- newline:区分换行符
- closefd:传入file参数
二、文件读操作
- f.read(size) 读指定字节的内容,默认读取文件所有内容。注意读取到的指是str类型,如果需要运算要先进行转换。
- f.readline() 读取一行,包括换行符
- f.readlines(sizeint) 读取所有行,并且返回列表。若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区
#循环读取
for index,line in enumerate(f.readlines()): #可以得到索引下标
print(line.strip().slipt()) #line.strip() 去除换行; .slipt() 除去空格
三、文件写操作
Python_write和writelines的区别
1 write()需要传入一个字符串做为参数,否则会报错
2 writelines()既可以传入字符串又可以传入一个字符序列,并将该字符序列写入文件
注意 :writelines必须传入的是字符序列,不能是数字序列
如:list_1023 = [1,2,3,4,5]
#两个文件之间读写
f = open("fileName","r",encoding="UTF-8") #从这个文件中读
new_f = open("new_shoppingCar.txt","w",encoding="UTF-8") #写入这个文件中
for line in f:
if "书桌" in line:
line = line.replace("书桌","学生书桌") #使用第二个字符串替换第一个字符串
new_f.write(line)
f.close()
new_f.close()