一、python自带读写文件
1、打开(open)文件方式
r | 读 |
w | 写 |
a | 追加 |
r+ (r+w) | 可读可写,文件若不存在就报错(IOError) |
w+ (w+r) | 可读可写,文件若不存在就创建 |
a+ (a+r) | 可追加可写,文件若不存在就创建 |
对应的,如果是二进制文件,就都加一个b:
'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'
2、读文件
三种方式:
方法 | 描述 |
---|---|
read()/read(size) | 一次读取文件所有内容,返回一个str。加入size: 每次最多读取指定长度的内容,返回一个str;在Python2中size指定的是字节长度,在Python3中size指定的是字符长度 |
readlines() | 一次读取文件所有内容,按行返回一个list |
readline() | 每次只读取一行内容 |
例如:读下面这个文件1.txt:
hello
world
!
zhj
fly
123
(1)read()读取整个文件(结果即上面文件内容):
def read_file():
with open(filepath, 'r') as f:
res = f.read()
print(res)
(2)read(size):
def read_file():
with open(filepath, 'r') as f:
while True:
res = f.read(10)
if not res:
break
print(res, end='')
(3)readlines():
def read_file():
with open(filepath, 'r') as f:
res = f.readlines()
for _res in res:
print(_res, end='')
(4)readline():
def read_file():
with open(filepath, 'r') as f:
while True:
res = f.readline()
if not res:
break
print(res, end='')
3、写文件
写文件与读类似,只是open的时候打开方式不同。
python文件对象提供了两个“写”方法: write() 和 writelines()。
- write()方法和read()、readline()方法对应,是将字符串写入到文件中。
- writelines()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。
另外,写的内容必须是str,否则会报错。
例如:
(1)write写:
def read_file():
with open(filepath, 'w') as f:
res = 'hello world!'
f.write(res)
(2)writelines写:
def read_file():
with open(filepath, 'w') as f:
res = ['hello\nworld\nzhj\nfly\n']
f.writelines(res)
结果:
hello
world
zhj
fly
二、读写csv文件
使用csv模块读写
1、读csv文件
原文件:
a 1 2 3
b 4 5 6
c 7 8 9
d 10 11 12
def read_file():
with open(filepath, 'r') as f:
lines = csv.reader(f, delimiter=' ')
for line in lines:
print(line)
结果:
['a', '1', '2', '3']
['b', '4', '5', '6']
['c', '7', '8', '9']
['d', '10', '11', '12']
2、写csv文件
def read_file():
file = [['a', '1', '2', '3'], ['b', '4', '5', '6'], ['c', '7', '8', '9'], ['d', '10', '11', '12']]
with open(filepath, 'w', newline='') as f:
writer = csv.writer(f, delimiter=' ')
for line in file:
writer.writerow(line
三、读写json文件
1、读json
从字符串读取json:
json_obj = json.loads(str, object_pairs_hook=OrderedDict)
从文件读取json:
with open(filepath, 'r') as f
json_obj = json.load(f, object_pairs_hook=OrderedDict)
2、写json
写入字符串:
str = json.dumps(json_obj, sort_keys=True, indent=4)
写入文件:
with open(filepath) as f:
json.dump(json_obj, f, sort_keys=True, indent=4)