Python 文件操作
介绍
打开文件,使用 open(文件名[, mode])
返回一个文件对像,一般with open('x.txt','w') as f
。
函数说明:
read()
逐个字节(b)或者字符读取文件中的内容- 以文本模式(非二进制模式)打开,
read()
函数会逐个字符进行读取 - 以二进制模式打开,
read()
函数会逐个字节进行读取 f.read([size])
读多少,f.read(3)
读取3个字符
readline()
逐行读取文件内容readlines()
一次性读取文件中所有内容f.close()
关闭f.readable()
文件是否可读f.writable()
文件是否可读f.closed
文件是否关闭f.encoding
如果文件打开模式为b,则没有该属性f.write(xxx)
写f.flush()
立刻将文件内容从内存刷到硬盘f.name
f.seek(3,0)
参照文件开头移动了3个字节0
默认的模式,代表指针移动的字节数是以文件开头为参照的1
该模式代表指针移动的字节数是以当前所在的位置为参照的2
该模式代表指针移动的字节数是以文件末尾的位置为参照的
mode
说明:
r
读模式r+
读写模式rb
读二进制rb+
w
写模式wb
写二进制
# f = open('abc.txt')
with open('/path/to/file', 'r') as f:
# Some Code ...
f.read(1)
# 二进制模式打开
f = open('/Users/michael/test.jpg', 'rb')
# codecs模块方便解码
with codecs.open('/Users/michael/gbk.txt', 'r', 'gbk') as f:
文件属性:
f.name # 文件名
f.mode # modes: r, w, a, r+, binary
读取文件内容:
f.read() # get the file
f.read(100) # read 100 bytes
f.readline() # read one line
f.readlines() # read all lines
f.seek(0) # start of file
写入文件:
f.write('some_content')
关闭文件:
f.close()
f.flush()
练习
# -*- coding: utf-8 -*-
# def sort_fun1():
# result = []
# with open('./shoes.txt', 'r') as f:
#
# for line in f.readlines():
# l = line.rsplit()
# result.append({
# 'brand': ' '.join(l[0:-2]),
# 'color': l[-2],
# 'size': l[-1]})
# result.sort(key=lambda x: x['size'])
# result.sort(key=lambda x: x['brand'])
# result.sort(key=lambda x: x['color'])
# for i in result:
# print i
def sort_fun():
result = []
with open('./shoes.txt', 'r') as file:
for line in file:
l = line.split(None, 2)
result.append({'brand': l[0], 'color': l[1], 'size': l[2].strip()})
result.sort(key=lambda x: x['size'])
result.sort(key=lambda x: x['brand'])
result.sort(key=lambda x: x['color'])
for i in result:
print i
if __name__ == '__main__':
sort_fun()
Adidas orange 43
Nike black 41
Adidas black 39
New Balance pink 41
Nike white 44
New Balance orange 38
Nike pink 44
Adidas pink 44
New Balance orange 39
New Balance black 43
New Balance orange 44
with open("my_file.txt",'rb+') as f:
byt = f.read()
print(byt)
print("\n转换后:")
print(byt.decode('utf-8'))
# with 打开的文件,不需要显示调用 close() 关闭文件
# f.close()