博客迁往:新地址(点击直达)

新博客使用markdown维护,线下有版本库,自己写的所以会定时更新同步,同时提供更好的导航和阅读体验

csdn对markdown支持不好,所以旧版不会花时间进行同步修订,抱歉

-----------------------

文件处理

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

文件模式

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

file_object = open(file_name, access_mode = ‘r’, buffering = -1)

file_name:打开的文件名,若非当前路径,需指出具体路径

mode:可选参数,文件打开模式

bufsize:可选参数,是否使用缓存

mode

模式 描述

r 以读方式打开文件,可读取文件信息.文件必须已存在

w 以写方式打开文件,可向文件写入信息。存在则清空,不存在创建

a 以追加方式打开文件,文件指针自动移到文件尾。追加

r+ 以读写方式打开文件,可对文件进行读和写操作。

w+ 消除文件内容,然后以读写方式打开文件。

a+ 以读写方式打开文件,并把文件指针移到文件尾。

b 以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的

U 通用换行符支持,任何系统下的文件, 不管换行符是什么, 使用U模式打开时, 换行符都会被替换为NEWLINE(\n)

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

b代表二进制数据处理

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

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

bufsize

bufsize取值 描述

0 禁用缓冲

1 行缓冲,只缓冲一行

\>1 指定缓冲区的大小,定制

<1 系统默认的缓冲区大小,m默认

文件对象属性

常用几个:

file.name 文件名

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

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

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

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

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

f = open("a.py", "r")

print f.name

print f.mode

print f.encoding

print f.closed

文件操作

获取帮助

dir(f)

help(f.seek)

操作列表

#读

file.read(size=-1) 从文件读取size个字节,未给定或为负,读取所有

file.readline(size=-1) 读取并返回一行,或返回最大size个字符,包括\n

file.readlines(sizeint=0) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区

#写

file.write(str) 向文件中写入字符串(文本或二进制)

file.writelines(seq) 写入多行,向文件中写入一个字符串列表,注意,要自己加入每行的换行符

#其他

file.seek(off,whence=0) 从文件中给移动指针,从whence(0起始,1当前,2末尾)偏移off个字节,正结束方向移动,负往开始方向移动

file.tell() 返回当前文件中的位置。获得文件指针位置

file.truncate(size=file.tell()) 截取文件到最大size个字节,默认为当前文件位置

file.close() 关闭打开的文件,垃圾回收机制也会在文件对象的引用计数降至0的时候自动关闭文件

file.fileno() 返回文件描述符(file descriptor FD 整型)是一个整数, 可以用在如os模块的read方法等一些底层操作上.

file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入.

file.isatty() 判断file是否是类tty设备

file.next() 返回文件下一行

最佳实践

1.养成手动close

f = open('a.py')

……

f.close()

2.读取大文件

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

f = open('bigdata')

lines = [ line.strip() for line in f.readlines()]

…..

f.close()

方法二:迭代

f = open('bigdata')

for line in f:

line = line.strip()

…..

f.close()

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

>>> with open('a.py') as f:

... for line in f:

... line = line.strip()

StringIO

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

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

>>> import cStringIO

>>> fs = cStringIO.StringIO()

>>> fs.write('hello world')

>>> fs.getvalue()

'hello world'

pickle

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

# encoding: utf-8

import pickle

d = {'a':1,'b':2}

f = open('datafile.pkl','wb')

pickle.dump(d,f)

f.close()

f=open('datafile.pkl','rb')

e=pickle.load(f)

print e

struct

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

#!/usr/bin/env python

# encoding: utf-8

import struct

f = open('data.bin','wb')

data = struct.pack('hhl', 1, 2, 3)

f.write(data)

f.close()

f = open('data.bin','rb')

data = f.read()

values = struct.unpack('hhl',data)

print values

其他相关模块

base64 二进制字符串和文本字符串之间的编码/解码操作

binascii 二进制和ascii编码的二进制字符串间的编码/解码操作

bz2 访问BZ2格式的压缩文件

csv 访问csv文件(逗号分割文件)

filecmp 用于比较目录和文件

fileinput 提供多个文本文件的行迭代器

getopt/optparse 提供了命令行参数的解析/处理

glob/fnmatch 提供Unix样式的通配符匹配功能

gzip/zlib 读写GNU zip(gzip)文件(压缩需要zlib模块)

shutil 提供高级文件访问能力

c/StringIO 对字符串对象提供类文件接口

tarfile 读写TAR归档文件, 支持压缩文件

tempfile 创建一个临时文件(名)

uu 格式的编码和解码

zipfile 用于读取ZIP归档文件的工具

The end!

To be continue

wklken

Email: wklken@yeah.net

Blog: http://blog.csdn.net/wklken

2013-03-16

转载请注明出处,谢谢

python文件处理基础_[Python入门及进阶笔记]Python-基础-文件处理小结相关推荐

  1. python cocos2d新手教程_初学者必备!超详细Python基础入门教程

    相信初学Cocos2D者对Python还不熟悉,今天本篇教程带你快速入门,一小时学会Python. 1.为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范 ...

  2. python 选择文件对话框插件_[ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件/目录选择对话框...

    本文主要介绍PyQt界面实现中常用的消息弹出对话框.提供用户输入的输入框.打开文件获取文件/目录路径的文件对话框.学习这三种控件前,先想一下它们使用的主要场景: 1.消息弹出对话框.程序遇到问题需要退 ...

  3. python人生的不同阶段_从入门到入土的Python自学教程,用改变你的人生轨迹

    Python在近几年越来越受追捧,很多童鞋或者职场小伙伴想要提升技能-学习Python. 这是非常好的事情,但问题在于很多人不知道学Python做什么,所以什么零碎细末.艰难晦涩.长篇大论的都去看,很 ...

  4. python数据科学手册_小白入门Python数据科学

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  5. python模拟键盘输入_这件神器,每个 Python入门学习者都值得一试

    灰常实用的一篇文章,看完你会来点赞滴. 不论你是刚开始学 Python,还是正在啃数据分析的骨头,对你来说,不断在各种命令行窗口和编辑器里切来切去,或者不断打开各种窗口查看 matplotlib 的输 ...

  6. 零基础python入门书籍推荐书目_清华大学出版社-图书详情-《Python数据科学零基础一本通》...

    序 多次与教育界的朋友相聚,谈到计算机语言的发展趋势时,大家一致认为 Python 是 当今最重要的计算机语言.许多知名公司,例如 Google.Facebook 等皆已将 Python 列 为必备计 ...

  7. python是一种面向对象的高级语言_为什么入门大数据选择Python而不是Java?

    马云说:"未来最大的资源就是数据,不参与大数据十年后一定会后悔."毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰.今天我 ...

  8. 手机安装python jam有什么影响_Python入门用Bug修改和.jam文件需要注意的问题

    Python入门用Bug修改和.jam文件需要注意的问题 本文主要是针对c++中嵌入Python入门时在用Bug修改和.jam文件时,我们所要值得注意的相关问题的介绍,以及如何去应对这些问题,以下就是 ...

  9. python翻译成中文_图像处理入门 100 题,有人把它翻译成了中文版!

    红色石头的个人网站: 红色石头的个人博客-机器学习.深度学习之路​www.redstonewill.com 之前,我发文推荐过一份图像处理入门 100 题,主要针对图像处理的一些基本操作,非常适合入门 ...

最新文章

  1. deeplearning量化
  2. element ui input 无法输入的解决办法
  3. php实现图片缩放功能类
  4. php开发以太坊无法连接到远程Geth,connect: permission denied.
  5. centos 7 安装wps
  6. linux环境下安装mysql 8.0
  7. mysql 使用正则表达式查询
  8. 创业公司用 Serverless,到底香不香?
  9. php rijndael,将PHP Rijndael算法重写为Java(Android)
  10. visio交叉线去掉交叉点弯曲方法
  11. Jumpserver安装和总结
  12. 62.Linux/Unix 系统编程手册(下) -- 终端
  13. swift 笔记 (二十一) —— 高级运算符
  14. 台达b2伺服说明书_台达自动化制盒机设备 | 创造更多元灵活弹性产线
  15. python微信聊天机器人_Python搭建一个微信聊天机器人
  16. 分享大三改进后的python写的【银行管理系统】,超详细 【内附源码】
  17. short转换byte
  18. 服务器防火墙开启导致无法远程连接解决方案
  19. JAVA汽车租赁系统(JAVA毕业设计)
  20. 吐槽微信公众号技术团队的故障处理效率

热门文章

  1. MKVToolnix 视频制作和DTS 音轨转换
  2. 【CSS】滚动条样式详解
  3. 重庆大学校友会计算机,校友会-重庆大学
  4. 当笔记本连接不上无线网怎么办
  5. iQOO 8实测上手体验:王者归来,从不高调
  6. 【收藏】如何优雅的在 Python matplotlib 中可视化矩阵,以及cmap色带设置
  7. 【Floyd最短路径算法】--python实现
  8. 我们连站都站不好--从Taylor Swift的脖子说起
  9. PPT打印总是很费纸?看下这个打印技巧,别再浪费纸了!
  10. 《乖,摸摸头》经典语录