一、open函数:对文件读写之前,需要先打开文件,获取文件句柄
注意:open() file() 尽量使用open(),Python3以后不支持file()了
1、open(file_name[,access_mode][,buffering])
(1)参数说明
file_name:一个包含了你要访问的文件路径及文件名称的字符串值。尽量使用绝对路径
access_mode:打开文件的方式:这个参数是非强制的,默认文件访问模式为只读(r)
r,只读
w:写之前会清空文件的内容
a:追加的方式,在原本内容中继续写
buffering:先写到缓存中
如果buffering的值被设置为0,就不会有寄存;如果值为1,访问文件时会缓存行;如果值位大于1的整数,表明了这就是寄存区的缓冲大小;如果取负值,寄存区的缓冲大小则为系统默认。该参数也是非强制性的。
(2)返回值
该语句表示返回的File_object是一个指向文件的指针(一个文件对象)文件句柄。当以只读模式(r)打开一个不存在的文件时,就会报IOError异常(文件不存在),但如果是以写或追加模式(w/a/a+)打开一个不存在的文件时,默认会创建该文件,但如果是所在路径中有目录不存在,也会报IOError异常
 
创建一个文件:
fp=open('d:\\tmp\\01.txt',w)
 
2、mode文件操作模式
r,w,a
r+可读可写
w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
 
rb wb ab 读写二进制
 
3、通过open获取到的文件句柄可以对文件作的其他操作
(1)fp.closed
判断文件是否已经关闭。返回true如果文件已被关闭,否则返回false
(2)fp.mode
输出读写模式。返回被打开文件的访问模式。
(3)fp.name:
返回文件的名称。
(4) fp.softspace
如果用print输出后,是否跟一个空格符,false不打印,true则打印。
(5)fp.close()
刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
(6)flush()
把缓冲区中的内容持久化写到磁盘里
缓存区写满的情况,系统会自动调用flush()方法。
调用flush的时机:写入了多少长度的数据,或者间隔了多长的时间
如果没有flush(),持久化内容丢失
(7)next()
# for i in fp:
# print i
把一个file用for...in file这样的循环遍历语句时,就是调用next()函数来实现。
文件句柄是一个迭代器???
 
fp=open(fileName,'r')
 
print fp.next()
print fp.next()
print fp.fileno() 判断当前操作的文件句柄是哪一个number
fp.close()
 
(8)裁剪文件truncate([size])
用于截断文件,如果指定了可选参数 size,则表示截断文件为 size 个字符。 如果没有指定 size,则从当前位置起截断;截断之后 size 后面的所有字符被删除。
如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
fp='e:\\tmp\\03.txt'
 
f1=open(fp,'r+')
line=f1.readline()
print line
 
f1.truncate()
print f1.tell()
f1.close()
 
二、对文件作读写操作
1、常规的读写操作
(1)read([size])
size:读取的长度,以byte为单位。如果不指定参数,表示一次性读取全部内容,以字符串形式返回,并且每一行结尾会有一个"\n"符号。
 
(2)、readline([size])
调一次读取一行,如果给定了size,有可能返回的只是一行的一部分,以字符串的形式返回,并且结尾会有一个换行符"\n"。读完一行,文件操作标记移动到下一行的开头。
返回的是字符串
 
(3)、readlines([size])
(3.1)参数
size:指定很小的数字,会不生效,python 默认8k缓存区大小,需要大于8k生效
读取文件的全部内容,这个函数的内部是通过循环调用readline()来实现的
(3.2)返回值
返回的是列表格式,每一行是列表的一个元素,并且结尾会有一个换行符"\n"
 
(4)、writelines(seq)
seq:把seq(序列)的内容全部写到文件中(多行一次性写入)。也不会自动加入换行符。
注意:序列中的内容也必须是字符串类型的数据,才能成功写入文件。
 
(5)、write(str)
把str写到文件中,默认是不加换行符的,所以如果想换行的话,得手动加入换行符'\n'。
 
2、使用linecache模块读取文件
import linecache
允许从任何文件里得到任何的行,并且使用缓存进行优化,常见的情况是从单个文件读取多行。
(1)linecache.getlines(filename,lineno)
从名为 filename 的文件中得到第 lineno 行。
这个函数从不会抛出一个异常–产生错误时它将返回”(换行符将包含在找到的行里)。
如果文件没有找到,这个函数将会在 sys.path 搜索。
(2)linecache.getlines(filename) 返回列表
从名为 filename 的文件中得到全部内容,输出为列表格式,以文件每行为列表中的一个元素,并以 linenum-1 为元素在列表中的位置存储
(3)linecache.clearcache()
清除缓存,如果你不再需要先前从 getline() 中得到的行
(4)linecache.checkcache([filename])
检查缓存的有效性。如果在缓存中的文件在硬盘上发生了变化,并且你需要更新版本,使用这个函数。
如果省略 filename,将检查缓存里的所有条目。
(5)linecache.updatecache(filename)
更新文件名为 filename 的缓存。如果 filename 文件更新了,使用这个函数可以更新
linecache.getlines(filename)返回的列表。
 
另:读取文件之后你不需要使用文件的缓存时需要在最后清理一下缓存,使linecache.clearcache()清理缓存,释放缓存。
这个模块是使用内存来缓存你的文件内容,所以需要耗费内存,打开文件的大小和打开速度和你的内存大小有关系。
打印奇数行的文件:
fp='e:\\tmp\\05.txt'
list1=linecache.getlines(fp)
for i in list1[::2]:
print i
 
3、pickle模块和cPickle模块
对文件整体的读写
(1)、pickle模块(Python提供一个标准的模块)
列表内容持久存储到内存中
使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为持
久地储存对象(序列化)
(2)、cPickle 列表和文件内容的转换
它的功能和pickle模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle快1000倍),推荐使用。
import cPickle as p
p.dump(list,fp) 把列表list内容保存到内存中,存入一个文件(这个文件带有cPickle特有的格式)中
fp:打开的文件句柄,如:fp=open('d:\\tmp\\test1.txt','wb')
list=p.load(fp) 把之前存放在文件中的内容保存到列表list中
 
 
三、读取文件的位置定位
1、tell()
返回当前操作文件读取到的位置
一个中文:3个字节
Windows下‘\r\n’(换行符)占两个字节,Linux下\n mac下\r.
2、seek(offset[,from]) 移动游标到想去的位置
from:,默认是0,2:从末尾开始计算偏移;1:从当前位置作为标准位置
offset:移动的总距离,可以是正数,可以为负数
 

Python之文件操作:文件的读写的更多相关文章

  1. python基础知识---操作文件

    一.打开文件  open()函数 open函数返回一个文件对象. 用法:open('文件名','模式') 打开文件的模式有: r,只读模式(默认). w,只写模式.[不可读:不存在则创建:存在则删除内 ...

  2. python,os操作文件,文件路径(上一级目录)

    python获取文件上一级目录:取文件所在目录的上一级目录 os.path.abspath(os.path.join(os.path.dirname('settings.py'),os.path.pa ...

  3. 文件操作mode学习总结-----Python学习总结【第四篇】:Python之文件操作(文件、正则、json、pickle)

    非常全的博客,防丢链接参考https://www.cnblogs.com/madsnotes/articles/5521551.html 1.文件操作 1.1 操作流程 1)文件打开 2)文件操作 3 ...

  4. python学习笔记 操作文件和目录

    如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...

  5. python 文件操作: 文件操作的函数, 模式及常用操作.

    1.文件操作的函数: open("文件名(路径)", mode = '模式', encoding = "字符集") 2.模式: r , w , a , r+ , ...

  6. C++入门到理解之文件操作(文本文件的读写+二进制文件的读写)

    原文地址http://www.javayihao.top/detail/168 一:概述 1.程序在运行中产生的数据都是临时数据,程序一旦运行结束会被释放,可以通过文件相关的操作将数据持久保存. 2. ...

  7. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  8. Python OS模块操作文件和目录

    #-*-coding:utf-8-*- import os import shutil ###############OS模块############## #获得当前python脚本的工作目录 os. ...

  9. Python文件操作-文件的增删改查

    需求:对文件进行增删改查 由于时间原因,本次代码没有增加任何注释,如有疑问,请联系编辑者:闫龙 其实我也是醉了,看着这些个代码,我脑袋也特么大了,没办法,大神说了,不让用新知识,只可以使用学过的,所以 ...

  10. python——os模块操作文件

随机推荐

  1. 一次线上CPU高的问题排查实践

    一次线上CPU高的问题排查实践 前言 近期某一天上班一开电脑,就收到了运维警报,有两台服务CPU负载很高,同时收到一线同事反馈 系统访问速度非常慢,几乎无响应. 一个美好的早晨,最怕什么就来什么.只好 ...

  2. react 信用卡格式检验

    前言: 技术栈主要基于react + ant-design 描述: 填写信用卡卡号时,会自动四位空格,并格式校验判断卡种  ,这里我们业务只涉及到四种卡. 代码解析 // ant 组件自引,这里我只讲 ...

  3. iOS进阶面试题

    1. 风格纠错题 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // http://weibo.com/luohanchenyilong/ // https://github. ...

  4. python字典形list 去重复

    data_list = [{"}] run_function = lambda x, y: x if y in x else x + [y] return reduce(run_functi ...

  5. 2.在Cisco Packet Tracer里交换机默认网关的配置(实现跨网段telnet)

    我们将在此拓扑图的基础上进行实验 大多命令都可用tab键位来补齐 1.分别给pc机设置好ip地址 pc2为:192.168.1.1 pc3为:192.168.2.1 两台计算机处在不同的网段之中 2. ...

  6. ATM-db-dnhandler

    import os,jsonfrom conf import settings def select(name): user_path = os.path.join(settings.BASE_DB, ...

  7. 【PHP】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI、SCRIPT_NAME、PHP_SELF区别

    实例:1.http://localhost/index.php/Home/Home/index.html $_SERVER['QUERY_STRING'] = ""; $_SERV ...

  8. javaWeb开发中常见的问题

    1.修改表单提交的时候不好使可能是因为没写对应隐藏域的ID 2.el表达式在js代码中要加“”,例如 "${}" 3.JavaScript中的函数也有重载的特性.如果两个input ...

  9. Python 文件操作Error: binary mode doesn't take an encoding argument

    Python 报错:ValueError: binary mode doesn't take an encoding argument 在运行文件操作相关功能时报错:ValueError: binar ...

  10. Postgres安装详解

    PG安装 一.基础包的安装(yum源的配置,可以采用光盘挂载,及ftp yum源,针对外网环境忽略此步): yum -y install wget tcpdump glibc libgcc gcc g ...