Python 文件操作

发布时间: 更新时间: 总字数:662 阅读时间:2m 作者: 分享 复制网址

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()

练习

  • sort.py
# -*- 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()
  • shoes.txt
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
  • encode
with open("my_file.txt",'rb+') as f:
  byt = f.read()
  print(byt)
  print("\n转换后:")
  print(byt.decode('utf-8'))

# with 打开的文件,不需要显示调用 close() 关闭文件
# f.close()
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数