当前位置:   article > 正文

[Python入门及进阶笔记]Python-基础-文件处理小结_file.lower()

file.lower()

文件处理

python常用,主要是用于文件操作,配合字符串操作,数值计算等,完成数据处理。

文件模式

打开一个文件,返回一个文件对象。可以用open()或者file(),建议使用前者

  1. file_object = open(file_name, access_mode = ‘r’, buffering = -1)
  2. file_name:打开的文件名,若非当前路径,需指出具体路径
  3. mode:可选参数,文件打开模式
  4. bufsize:可选参数,是否使用缓存
mode
  1. 模式 描述
  2. r 以读方式打开文件,可读取文件信息.文件必须已存在
  3. w 以写方式打开文件,可向文件写入信息。存在则清空,不存在创建
  4. a 以追加方式打开文件,文件指针自动移到文件尾。追加
  5. r+ 以读写方式打开文件,可对文件进行读和写操作。
  6. w+ 消除文件内容,然后以读写方式打开文件。
  7. a+ 以读写方式打开文件,并把文件指针移到文件尾。
  8. b 以二进制模式打开文件,而不是以文本模式。该模式只对WindowsDos有效,类Unix的文件是用二进制模式进行操作的
  9. U 通用换行符支持,任何系统下的文件, 不管换行符是什么, 使用U模式打开时, 换行符都会被替换为NEWLINE(\n)

+ 代表同时作为输入和输出文件,可以对相同文件进行读写

b代表二进制数据处理

和 r/w/a组合.r+ 使用读写方式打开, rb二进制读

注意,在mode中使用b,b不能作为第一个字符出现

bufsize

bufsize取值 描述

  1. 0 禁用缓冲
  2. 1 行缓冲,只缓冲一行
  3. \>1 指定缓冲区的大小,定制
  4. <1 系统默认的缓冲区大小,m默认

文件对象属性

常用几个:

file.name 文件名

file.encoding文件使用编码,None 时使用系统默认编码

file.mode Access文件打开时使用的额访问模式

file.closed表文件已关闭,否则False

file.newlines未读取到分隔符时为None,包含行结束符的列表

file.softspace为0表示在输出一数据后,加上一空格,1表示不加,内部使用

  1. f = open("a.py", "r")
  2. print f.name
  3. print f.mode
  4. print f.encoding
  5. print f.closed

文件操作

获取帮助

  1. dir(f)
  2. help(f.seek)

操作列表

  1. #读
  2. file.read(size=-1) 从文件读取size个字节,未给定或为负,读取所有
  3. file.readline(size=-1) 读取并返回一行,或返回最大size个字符,包括\n
  4. file.readlines(sizeint=0) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区
  5. #写
  6. file.write(str) 向文件中写入字符串(文本或二进制)
  7. file.writelines(seq) 写入多行,向文件中写入一个字符串列表,注意,要自己加入每行的换行符
  8. #其他
  9. file.seek(off,whence=0) 从文件中给移动指针,从whence(0起始,1当前,2末尾)偏移off个字节,正结束方向移动,负往开始方向移动
  10. file.tell() 返回当前文件中的位置。获得文件指针位置
  11. file.truncate(size=file.tell()) 截取文件到最大size个字节,默认为当前文件位置
  12. file.close() 关闭打开的文件,垃圾回收机制也会在文件对象的引用计数降至0的时候自动关闭文件
  13. file.fileno() 返回文件描述符(file descriptor FD 整型)是一个整数, 可以用在如os模块的read方法等一些底层操作上.
  14. file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入.
  15. file.isatty() 判断file是否是类tty设备
  16. file.next() 返回文件下一行

最佳实践

1.养成手动close

  1. f = open('a.py')
  2. ……
  3. f.close()

2.读取大文件

方法一:一次性读入,去左右空白+换行符,文件太大不建议这么做

  1. f = open('bigdata')
  2. lines = [ line.strip() for line in f.readlines()]
  3. …..
  4. f.close()

方法二:迭代

  1. f = open('bigdata')
  2. for line in f:
  3. line = line.strip()
  4. …..
  5. f.close()

3.上下文管理器用with,等价与上面方法二,注意不用显式close

  1. >>> with open('a.py') as f:
  2. ... for line in f:
  3. ... line = line.strip()

StringIO

StringIO“虚拟文件”不是永久的

如果不保存它(如将它写入一个真正的文件,或者使用 shelve 模块或数据库),则程序结束时,它将消失

  1. >>> import cStringIO
  2. >>> fs = cStringIO.StringIO()
  3. >>> fs.write('hello world')
  4. >>> fs.getvalue()
  5. 'hello world'

pickle

pickle任意python对象和字符串之间的序列化类似java序列化存储到文件的过程

  1. # encoding: utf-8
  2. import pickle
  3. d = {'a':1,'b':2}
  4. f = open('datafile.pkl','wb')
  5. pickle.dump(d,f)
  6. f.close()
  7. f=open('datafile.pkl','rb')
  8. e=pickle.load(f)
  9. print e

struct

能够构造并解析打包的二进制数据

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. import struct
  4. f = open('data.bin','wb')
  5. data = struct.pack('hhl', 1, 2, 3)
  6. f.write(data)
  7. f.close()
  8. f = open('data.bin','rb')
  9. data = f.read()
  10. values = struct.unpack('hhl',data)
  11. print values

其他相关模块

  1. base64 二进制字符串和文本字符串之间的编码/解码操作
  2. binascii 二进制和ascii编码的二进制字符串间的编码/解码操作
  3. bz2 访问BZ2格式的压缩文件
  4. csv 访问csv文件(逗号分割文件)
  5. filecmp 用于比较目录和文件
  6. fileinput 提供多个文本文件的行迭代器
  7. getopt/optparse 提供了命令行参数的解析/处理
  8. glob/fnmatch 提供Unix样式的通配符匹配功能
  9. gzip/zlib 读写GNU zip(gzip)文件(压缩需要zlib模块)
  10. shutil 提供高级文件访问能力
  11. c/StringIO 对字符串对象提供类文件接口
  12. tarfile 读写TAR归档文件, 支持压缩文件
  13. tempfile 创建一个临时文件(名)
  14. uu 格式的编码和解码
  15. zipfile 用于读取ZIP归档文件的工具
本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号