《转》Python学习(14)-对文件的操作(一)
转自 http://www.cnblogs.com/BeginMan/p/3166644.html
一、文件对象
我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作。
《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'
《转》Python学习(14)-对文件的操作(一)的更多相关文章
- 《转》Python学习(15)-对文件的操作(二)
转自 http://www.cnblogs.com/BeginMan/p/3169020.html 一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进 ...
- Python学习日记之文件读取操作
Python内置了文件读写的函数open,read 用法示例: open('/home/root/files.txt ') 在打开文件后,操作完成后可以使用close()关闭文件,但比较好的文件读写方 ...
- 记录我的 python 学习历程-Day08 文件的操作
文件操作的初识 用 python 代码对文件进行各种操作. 基本构成: 文件路径:path 打开方式:读.写.追加.读写.写读-- 编码方式:utf-8 / gbk / gb2312-- f = op ...
- 【Python学习之六】文件操作
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 python3.6 一.文件的打开与关闭 使用open函数,可以打开一 ...
- Python学习笔记015——文件file的常规操作之一(文本文件)
1 什么是文件 文件是用于数据存储的单位 文件通常用来长期保存数据 读写文件是最常见的I/O操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件的功能都是由操作系统提供的,一般而言,操 ...
- Python学习:7.文件操作
文件操作 我们曾将听过一个问题,将大象放入冰箱分为三步:1.打开冰箱门,2.将大象放进去,3.关上冰箱门.今天我们要讲的Python文件操作的步骤就像将大象放入冰箱的步骤一样. 使用Python操作文 ...
- python学习笔记之文件操作(三)
这篇博客小波主要介绍一下python对文件的操作 对文件的操作主要分为三步: 1.打开文件获取文件的句柄,句柄也是文件描述符 2.通过文件句柄操作文件 3.关闭文件. 现有以下文件,是小波随写的周杰伦 ...
- python学习第十八天 --文件操作
这一章节主要讲解文件操作及其文件读取,缓存,文件指针. 文件操作 (1)文件打开:open(filepath,filemode) filepath:要打开文件的路径 filemode:文件打开的方式 ...
- python 的基础学习 第九天 文件的操作
1,文件操作 参数:1,文件路径 2,编码方式,3,执行动作(打开方式),只读,只写,,读写,追加和读写. 1 打开文件,得到文件句柄并赋值给一个变量.2. 通过句柄对文件进行操作.3. 关闭文件 ...
随机推荐
- EF5+MVC4系列(6) 简单三层的搭配(泛型) 实现 增删改查
1:项目结构 2:每层添加对其他层的引用,这里我们把除了Web层之外的所有的层生成的文件都放到解决方案下的Library文件夹下,然后每个项目分别来引用里面的dll项目文件. 我们在Model项目上, ...
- Android 知识梳理
说明:本篇博客只是一个知识整理,因为网上对于Android的知识介绍足够多,因此我不再写相关文章(主要是因为我写的不如人家好),所以所有文章均来自网络,不贴原文章,只提供连接,因此本文旨在减少你对相关 ...
- IE8下submit表单没反应
当在IE8浏览器下,例如以下代码<input type="submit" value="sub" />点击没反应.通常是因为表单里面嵌套了表单造成的 ...
- 用shell 实现对MySQL数据库分页
参考链接 http://mp.weixin.qq.com/s?__biz=MzAxMzE4MDI0NQ==&mid=208299533&idx=1&sn=4cab00793eb ...
- js 退后一步并刷新,window.history.back(-1);这个只能后退一步不能刷新,
location.href=document.referrer; document.referrer是获取上一页的url
- Bat注释符号
打开命令显示:echo on关闭命令显示:echo off, @ echo off, (加@表示连echo off都不显示,不然会显示出echo off的命令) rem : 注释, 表示不执行rem ...
- mysql查询两个日期之间相差多少天?
需求描述: 在mysql中,查看两个日期之间相差多少天 操作过程: 1.通过datediff函数,查看两个日期之间相差多少天 mysql> select datediff('2018-06-26 ...
- 纯CSS实现瀑布流布局
https://www.w3cplus.com/css/pure-css-create-masonry-layout.html
- python使用pyqt写带界面工具
上篇介绍的使用python自带tkinter包,来写带界面的工具. 此篇介绍使用pyqt来开发测试工具. tkinter的好处是python官方自带,上手容易(但手写控件复杂),布局和摆放都不直观和容 ...
- Go之Channel详解
channel取数据时未被赋值将被阻塞,可以使用这一机制来完成事件的监听 wg := new(sync.WaitGroup) wg.Add(2) event := make(chan bool) // ...