比较常用的文件读写选项:
r+读写模式
w+写读模式
a追加写模式
a+追加读模式,因为文件值在最后,所以需要先seek(0)到文件开头,然后再读
‘r’以读的方式打开,只能读文件,若文件不存在,则发生异常;
‘w’以写的方式打开,只能写文件,如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件;
‘rb’以二进制方式打开,只能读文件,如果文件不存在,会发生异常;
‘wb’以二进制方式打开,只能写文件,如果文件不存在,创建改文件;如果文件已存在,先清空,再打开文件;
‘rt’以文本读方式打开,只能读文件,如果文件不存在,则发生异常;
‘wt’以文本写方式打开,只能写文件,如果文件不存在,创建该文件,如果文件已存在,先清空,再打开文件;
‘rb+’以二进制读方式打开,可以读、写文件,如果文件不存在,会发生异常;
‘wb+’以二进制写方式打开,可以读、写文件,如果文件不存在,创建该文件;如果文件存在,先清空,在创建文件;
写入txt文件
with open('文件路径','w') as f:
f.write('写入内容必须是字符串') #自带文件关闭功能
1、实参‘w’告诉python以写入模式打开文件。打开文件时,可以指定读取方式('r':读取 'w':写入 ‘a’ 附加 'r+' 读取和写入 )默认为只读模式。
2、若写入的文件不存在,函数open()将自动创建。
3、以w写入模式打开文件时,每次写入都会清空之前内容,写入新的内容
4、以a追加模式打开文件时,每次写入不会清空之前内容,会从末尾继续追加内容
5、写入必须是字符串格式,如果不是字符串,写入前需转为字符串格式
6、函数write不会在写入文本末尾自动换行,如果要换行,需添加换行符
7、写入中文encoding='utf-8',with open('1.txt','w',encoding='utf-8') as f:
#以写入模式写入多行并内容换行显示:
with open('1.txt','w') as f:f.write('["ython","c++","java"]\n')f.write('(a,b,c)\n')f.write('{"username":"wangli","password":123456}\n')f.write('I love English too!')txt内显示如下:
["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!#以追加模式写入多行并内容换行显示:
with open('1.txt','a') as f:f.write('["ython","c++","java"]\n')f.write('(a,b,c)\n')f.write('{"username":"wangli","password":123456}\n')f.write('I love English too!\n')txt内显示如下:
["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!#writelines以写入模式写入列表类:data =[ ['a','b','c'],['a','b','c'],['a','b','c']]
with open("1.txt","w") as f: for i in data: f.writelines(i)txt内显示如下:
abcabcabc
读取txt文件
1、读取出来是字符串格式
2、若读取的文件不存在,会报错。
3、读取文件后,文件值会在最末尾,如果想再读取,需要seek(0)到文件最开始
read()一次性读全部内容
一次性读取文本全部内容,以字符串的形式返回结果
txt内容:
["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!#read()读取全部内容
with open('1.txt','r') as f:print(f.read(),type(f.read()))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too! <class 'str'>Process finished with exit code 0
readline()读取第一行内容
只读取文本第一行的内容,以字符串的形式返回结果
txt内容:
["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!#readline()读取一行
with open('1.txt','r') as f:print(f.readline(),type(f.readline()))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
["ython","c++","java"]<class 'str'>Process finished with exit code 0#readline()循环读取每行,避免读取文件太大
with open('1.txt','r') as f:for i in f:print(i,type(i))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
["Python","c++","java"]<class 'str'>
(a,b,c)<class 'str'>
{"username":"wangli","password":123456}<class 'str'>
I love English too! <class 'str'>Process finished with exit code 0
readlines()列表
读取文本所有内容,并且以数列的格式返回结果,一般配合for in使用
txt内容:
["ython","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!#readlines()读取全部放到list里面
with open('1.txt','r') as f:print(f.readlines(),type(f.readlines()))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
['["ython","c++","java"]\n', '(a,b,c)\n', '{"username":"wangli","password":123456}\n', 'I love English too!'] <class 'list'>Process finished with exit code 0
split() 方法语法:
str.split(str="", num=string.count(str)).
-
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
-
num -- 分割次数。默认为 -1, 即分隔所有。
txt内容:["Python","c++","java"]
(a,b,c)
{"username":"wangli","password":123456}
I love English too!with open('1.txt','r') as f:print(f.read().split('\n'))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
['["Python","c++","java"]', '(a,b,c)', '{"username":"wangli","password":123456}', 'I love English too!']Process finished with exit code 0with open('1.txt','r') as f:print(f.read().split('\n'))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
['["Python","c++","java"]', '(a,b,c)', '{"username":"wangli","password":123456}', 'I', 'love', 'English', 'too!']Process finished with exit code 0
strip()方法语法:
Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
str.strip([chars]);
-
chars -- 移除字符串头尾指定的字符序列。
txt内容:,["Python","c++","java"], (a,b,c), {"username":"wangli","password":123456}, I love English too ,with open('1.txt','r') as f:print(f.read().strip(','))"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
["Python","c++","java"], (a,b,c), {"username":"wangli","password":123456}, I love English too Process finished with exit code 0