Python笔记(9)文件

打开文件

open(name[, mode[, buffering]])
open函数只有一个参数name是必要的。name参数是文件名,然后函数返回一个file对象,如果我们要打开一个叫做somefile.txt的文件,且这个文件存在~/text文件夹下,你可以这样打开他
>>> f = open(r'~/text')

文件模式

默认的文件打开后,是返回一个只读文件,如果你想写在文件中的话,必须显示的定义mode参数,下面是mode参数最经常使用的值
Value     Description
'r'     Read mode
'w'     Write mode
'a'     Append mode
'b'     Binary mode (added to other mode)
'+'     Read/write mode(added to other mode)
其中’+‘可以添加在任何一个模式后面,表示可读可写
‘b’用来改变不同的文件处理方式,b表示binary,像视频,图像等等信息就是一个二进制文件,可以读的时候加上'rb'模式,这个表示以二进制的形式读取文件

Buffering

open函数的第三个参数是用来控制文件的缓冲的,如果参数的值是0,那么IO是无缓冲的,直接在文件上操作,如果值为1或者True,那么IO操作会在内存中有个缓冲区,文件知道你使用了flush或者close,文件修改的内容才会更新到文件,如果是一个更大的数字的话,那么就是指定缓冲区的大小,单位是byte

文件的一些基本方法

首先要知道三种标准流,基本输入流,sys.input,可以是自己键入的,可以来自其他的程序的输出流通过管道传输过来。基本输出流sys.stdout,用来输入数据,一般数据写在基本输出流上都是打印在显示器上,但是你可以重定向他成为另外一个程序的输入流。基本错误流,sys.stderr,许多情况下他都与sys.stdout相似。

读写

文件类对象的最重要的两个方法就是读和写,如果文件类对象名为f,那么你可以通过f.write来写入数据,也可一通过f.read来读数据,下面是例子。
f = open('somefile.txt', 'w')
f.write('Hello, ')
f.write('World!')
f.close()


下面是读文件的例子。
>>> f = open('somefile.txt', 'r')
>>> f.read(4)
'Hell'
>>> f.read()
'o, World!'



下面是从标号准流读数据的例子:
# somescript.py
import sys
text = sys.stdin.read()
words = text.split()
wordcount = len(words)
print 'Wordcount:', wordcount



你可以这样使用上面的程序:
cat somefile.txt | python somescript.py


随机访问

随机访问就是直接把文件当作一个流来处理
seek(offset[, whence])
移动到当前的位置,offset是一个位移量但是字节,whence为0是默认的,表示从文件头开始算offset,值为1表示从当前位置开始算offset,值为2表示从文件尾开始算位移量。下面是一个例子:
>>> f = open(r'c:\text\somefile.txt', 'w')
>>> f.write('01234567890123456789')
>>> f.seek(5)
>>> f.write('Hello, World!')
>>> f.close()
>>> f = open(r'c:\text\somefile.txt')
>>> f.read()
'01234Hello, World!89'



tell方法用来返回当前的位置
>>> f = open(r'c:\text\somefile.txt')
>>> f.read(3)
'012'
>>> f.read(2)
'34'
>>> f.tell()
5L



读写整行

readline([n])
readline函数是读取一整行,可以不带参数也可以赋一个整数n,n表示最大的读取的范围,使用方法如: somefile.readline()
writeline()与readline的方法相反,给他一个字符串的list,那么他会把这些list都写到文件中去,但是不会增加新的一行,所以,必须自己手动增加换行,所以一般可以用write函数代替writeline


文件的关闭

文件是写在缓存中的,只有当你flush或者close的时候会写到硬盘上面。所以当你的程序在写的时候,另外一个程序读这个文件会发现,文件并没有改边。在程序退出的时候,会自动close所有的文件。但是最好要显示的关闭文件,因为,如果你的文件发生了什么意外崩溃的话,可能修改并不会写入文件。而且,如果你不关闭的话,你会一直占有写入锁,这样,其他的程序则无法修改此程序。如果你并不确定你的文件是否已经关闭,你可以使用如下类似的代码:
# Open your file here
try:
# Write data to your file
finally:
    file.close()


在2.5以后的版本中加入一了with语句,是哟噢那个方法如下:
with open("somefile.txt") as somefile:
    do_something(somefile)


with语句用来打开一个文件,并且赋予一个变量名给它,然后你可以在语句的body中对文件进行操作,当文件结束后,会自动关闭。即使中间发生了异常,也会自动关闭,在2.5的版本你使用with语句的话,那么需要加入下面一句话:
from __future__ import with_statement
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值