一、文件对象

我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作。

《Python 核心编程》上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听。

>>> f = open('demo.txt','r')
>>> f
<open file 'demo.txt', mode 'r' at 0x00CCCEC0>
>>> type(f)
<type 'file'>

二、相关函数

[1]、内建函数:open()

提供了初始化输入/输出(I/O)操作的通用接口,成功打开一个文件后会返回一个文件对象,否则发生IOError异常。语法如下:

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

分析如下:

1):file_name:表示要打开文件名字的字符串,可以是相对路径也可以是绝对路径。
如:我在D盘新建一个空白名为out的文本文件,然后进行相关操作。

>>> f = open('../out.txt','w')
>>> f.write('good')
>>> f.close()

则打开该文件后,发现'good'已经写入进去了。

接下来使用绝对路径进行访问,如下:

>>> f = open('D:/out.txt','r')
>>> f.read()
'good'
>>> f.close()

2、可选变量access_mode也是字符串,代表文件打开模式。

注意:

1):使用'r'或'U'模式打开的文件必须已经存在

2):'w'模式打开的文件若存在则先清空,然后重新创建

3):'a'模式打开的文件是为了追加数据做准备的,所有写入的数据将追加到文件末尾。如果文件不存在,则自动被创建。

4):'+'代表可读可写

5):'b'代表二进制模式访问

6):默认情况下是 'r'

3、buffering可选参数,用于指示访问文件所采用的缓存方式。0表示不缓存;1表示只缓存一行,n代表缓存n行。如果不提供或为负数,则代表使用系统默认的缓存机制。

用处?这个麻烦有人能告诉我!

关闭文件:

打开文件消耗系统资源, 并且依赖于文件模式, 其它程序或许不能访问它们。这就是一旦操作完毕就该关闭文件的重要所在。

接上面的操作,加入还没有关闭:

>>> f.closed  #判断是否关闭
False
>>> f.close() #关闭方法
>>> f.closed
True
>>> f.tell() #如果已关闭,则一切针对文件操作都无效 Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
f.tell()
ValueError: I/O operation on closed file
>>>

[2]、工厂函数file()

与open()一样,可相互替换

>>> f = file('../out.txt','r')
>>> f.read()
'good'
>>> f.close()

三、相关方法

返回一个文件对象后(句柄),其实我也不清楚到底什么是句柄,这里摘自百度百科:

句柄,是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标志应用程序中的不同对象和同类对象中的不同的实 例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。应用程序能够通过句柄访问相应的对象的信息,但是句柄不是一个指针,程序不能利用句柄来直接阅读文件中的信息。如果句柄不用在I/O文件中,它是毫无用处的。 句柄是windows用来标志应用程序中建立的或是使用的唯一整数,windows使用了大量的句柄来标志很多对象。

一般与文件相关的方法无非是:输入、输出、文件内移动、杂项

[1]、输入

1、read():读取字节到字符串中,有可选参数size,默认是-1,如果为-1或复数则文件将会被读取到文件末尾。

>>> f.read()
'good'
>>> f.read(2)
'go'

2、readline():读取文件的一行,包括行结束符。同read()也有个可选参数size。

3、readlines():读取所有(剩余的)然后将它们作为字符串列表返回,它有个可选参数sizhint代表返回的最大字大小。

>>> f = file('../out.txt','r')
>>> f.readlines()
['good']

[2]、输出

1、write():把含有文本数据或二进制数据块的字符串写入到文件中去。

2、writelines():针对列表操作,接受一个字符串列表作为参数,将它们写入文件,行结束符并不会被自动加入,如果需要的话必须在调用writelines方法前给每一行结尾加上结束符。

>>> f =  open('d:/out.txt','w')
>>> f.writelines(['man'])
>>> f.close()
>>> f = open('d:/out.txt','r')
>>> f.read()
'man'

【注意:】

当使用read()或者readlines()从文件中读取行时,Python并不会删除行结束符,这个操作留给了程序员。

>>> f.readlines()
['game is your life,game is your life,game is your life,game is your life,game is your life,[*]\n', 'game is your life,game is your life,game is your life[]'] ---------------------------
>>> f = open('demo.txt','r')
>>> data = [line.strip() for line in f.readlines()]
>>> data
['game is your life,game is your life,game is your life,game is your life,game is your life,[*]', 'game is your life,game is your life,game is your life[]']

类似的,write()和writelines()也不会自动加入行结束符,应该自己添加。

>>> f = open('demo.txt','w')
>>> f.writelines([' my name is BeginMan\n,I like coding'])
>>> f.close()

打开该文件可查看:

[3]、文件内移动

tell()、seek()方法

f = open('d:/out.txt','rb')
print f.tell() #[1]
f.seek(10,1) #[2]
print f.tell() #10
print f.read(10) # BeginMan,
print f.read(18) #I like coding.
print f.tell() #38 """
【1】:tell():
tell 方法确认了已经移到当前文件位置
一个文件对象维护它所打开文件的状态。文件对象的 tell 方法告诉你在打开文件中的当前位置。
因为我们还没有对这个文件做任何事,当前位置为 0,它是文件的开始处。
"""
"""
【2】:seek():
文件对象的 seek 方法在打开文件中移动到另一个位置。第二个参数指出第一个参数是什么意思:
0 表示移动到一个绝对位置 (从文件开始算起),
1 表示移到一个相对位置 (从当前位置算起),
还有 2 表示文件末尾
"""

[4]、文件迭代

>>> f = open('d:/out.txt','rb')
>>> for eachline in f:
eachline 'my name is BeginMan,\r\n'
'I like coding.\r\n'

四、相关属性

file.closed:文件已被关闭,否则为False

file.mode:文件访问模式

file.name:文件名称

>>> f.mode
'r'
>>> f.name
'demo.txt'

FROM:http://www.cnblogs.com/BeginMan/p/3166644.html

Python对文件的操作(转)的更多相关文章

  1. python对文件的操作

    一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法. 1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件 ...

  2. python里文件读写操作

    文件读写操作一种基本操作,但是里面也存在很多需要注意的问题,例如字符编码.内存缓冲.指针位置等等.如果忽视这些问题就会引起很多不必要的麻烦.简单来说,文件的读写分为几个过程: 打开文件,并定义操作文件 ...

  3. 【Python】文件读写操作

    Python的文件读写有点类似php的文件读写.php的文件读写已经在<[php]让记事本成为你调控变量的控制台>(点击打开链接)说过了,以下用一个小样例说明Python的文件读写. 在F ...

  4. python关于文件的操作

    总是记不住API.昨晚写的时候用到了这些,但是没记住,于是就索性整理一下吧: python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Pyth ...

  5. python进阶--文件读写操作

    Python读写文件 1. open 使用open打开文件后一定要记得调用 文件对象的close()方法.比如可以用try --finally语句来确保最后能关闭文件. >>>f1 ...

  6. Python中文件的操作

    文件的操作介绍 文件打开的方法 主要有两种: no with 格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, new ...

  7. day9 python学习 文件的操作 读 写 seek

    文件的操作 1   文件的打开操作: 文件句柄 = open('文件路径', '模式') f=open('wangyakun','a+',encoding='utf-8') #文件名, 如果是绝对路径 ...

  8. Python读写文件实际操作的五大步骤

    Python读写文件在计算机语言中被广泛的应用,如果你想了解其应用的程序,以下的文章会给你详细的介绍相关内容,会你在以后的学习的过程中有所帮助,下面我们就详细介绍其应用程序. 一.打开文件 Pytho ...

  9. python基础--文件的操作

    #r w a 文件读取操作 默认打开为读操作 #f=open('coldplay.txt','r',encoding="utf-8")#open函数默认已系统编码方式打开windo ...

随机推荐

  1. 设计模式:模版模式(Template Pattern)

    android中的Activity框架,View框架中大量的on函数基本上都应用到了Template模式,掌握这一模式对于理解这些框架大有裨益. 模版模式 又叫模板方法模式,在一个方法中定义一个算法的 ...

  2. c-整型家族(integer family)

    C中,整型有: characters, short integer, integer, long integer 看起来,long integer要比short integer大,但是这也是不一定的. ...

  3. 马士兵SVN.

    下载 服务端:VisualSVN Server 和客户端:TortoiseSVN cmd,并cd 到 VisualSVN Server安装目录下的bin目录. 新建库: svnadmin create ...

  4. 给控制器添加工具栏(Swift语言)

    //懒加载工具条 private lazy var toolBar: UIToolbar = UIToolbar() //设置底部的工具条 private func setToolBar() { // ...

  5. web项目环境搭建(1):建立一个maven项目

    一.maven简介以及常用概念 1.Maven是一个项目管理和整合的工具.Maven为开发者提供了一套完整的构建生命周期框架.开发团队基本不用花多少时间就能自动完成工程的基础构建配置,因为Maven使 ...

  6. CSS分别设置Input样式(按input类型)

    当你看到<input>这个html标签的时候,你会想到什么?一个文本框?一个按钮?一个单选框?一个复选框?……对,对,对,它们都对.也许你可能想不到,这个小小的input竟然可以创造出10 ...

  7. 安装.net framework 4.0失败,出现HRESULT 0xc8000222错误代码

    安装了一上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了 和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了! 方法: 1 ...

  8. jquery1.9学习笔记 之选择器(基本元素一)

    所有选择器("*") 描述:选择所有元素 注意:大多数情况下,这个选择器极其的慢,尤其是在作用于自身时. 例子: 查找文档中的每个元素.然后追加一个<script>或& ...

  9. PHP高效的敏感词过滤方法

    <?php // 测试文件demo.php $badword = array( '张三','张三丰','张三丰田' ); // array_combine() 函数通过合并两个数组来创建一个新数 ...

  10. python3中文字符编码问题

    最近在进行网络爬虫时,被中文的编码问题搞得很头疼,特别是在windows环境下. 1.爬取到的中文网页内容,在解析时出现解析错误 一般情况下,我们都是用urllib中的相关函数,进行web页面的爬取, ...