file打开文件有两种方式,函数用file()或者open()。打开后读入文件的内容用read()函数,其读入是从文件当前指针位置开始,所以需要控制指针位置用:

一、先介绍下file读入的控制函数:

seek(offset,where): where=0从起始位置移动,1从当前位置移动,2从结束位置移动。当有换行时,会被换行截断。seek()无返回值,故值为None。

# 将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了where参数就不一定了, where可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。

            seek()的三种模式:

(1)f.seek(p,0) 移动当文件第p个字节处,绝对位置

(2)f.seek(p,1) 移动到相对于当前位置之后的p个字节

(3)f.seek(p,2) 移动到相对文章尾之后的p个字节

for instance:

inputfile= file('g:\\observer_report_20130915155111')

    #for line in filecontent.readline():

    #print inputfile.readline()

    #print inputfile.tell()

    #print inputfile.seek(0,0)

    #print inputfile.tell()

tell(): 返回文件的当前位置,即文件指针当前位置,以文件开头为原点,受seek、readline、read、readlines影响,不受truncate影响

truncate(n): 从文件的首行首字符开始截断,截断文件为n个字符;无n表示从当前位置起截断;截断之后n后面的所有字符被删除。其中win下的换行代表2个字符大小。

注意:truncate()这个函数跟文件指针位置无关。每次执行都是从文件开始处执行,也就是seek(0,0)的位置开始,截取指定参数的n个字符,其它的全部删除。所以要用a+(a不行)或是r+。如果用w+模式会读出空,因为w是先删除再写,一定不要用。执行结果为,只剩文件开头的n个字符。

read()读入所有行内容

readline(n):n为空时读入一行,默认读入当前行,开始读取的位置为tell()+1。n为一行中读入的字节数,不满一行的就取出部分(当前行的前n个字符),超出一行的只读一行。

readlines()读入所有行内容,按行读入,读入的内容为一行行。

另外,注意,新python,加入两个函数xreadline()和xreadlines(),其将读入的行作为类似列表的独立对象,返回的行可以独立按对象进行相关操作。

二、以下以1个例子说明以上各个函数的作用

fso = open("f:\\a.txt",'w+') '以w+方式,并非a方式打开文件,故文件原内容被清空

print fso.tell() '文件原内容被清空,故此时tell()=0

fso.write("abcde\n") '写入文件abcde\n,因为换行\n占两个字符,故共写入7个字符

print fso.tell() '此时tell()=7

fso.write("fghwm") '又写入文件fghwm,故此时文件共写入7+5 =12个字符

print fso.tell() '此时tell()=12

fso.seek(1, 0) '从起始位置即文件首行首字符开始移动1个字符

print fso.tell() ‘此时tell() =1

print fso.readline() '读取当前行,即文件的第1行,但是从第二个字符(tell()+1)开始读,结果为:bcde。

'若换成for读取整个文件或read读取整个文件则结为bcdefghwm

print fso.tell() ‘因为readline此时tell() =7,

fso.truncate(8) '从写入后文件的首行首字符开始阶段,截断为8个字符,即abcde\nf,即文件的内容为:abcde\nf

print fso.tell() ‘tell() 依旧为7,并为受truncate(8)影响,但是此时文件内容为abcde\nf

print fso.readline() ‘从tell()+1=8开始读取,读取当前行内容:f

fso.close()

#打开文件和进行写操作

f=open(‘test.txt’,'w’)

f.write(‘hello’)

f.writelines(['hi','haha'])#多行输入

f.close()

#append data

f=open(‘test.txt’,'a’)

f.write(‘hello’)

f.writelines(['hi','haha'])

f.close()

#连续写入后会自动关闭

open(‘test.txt’,'a’).write(‘11111\r\n’)

#把result里的元素依次填到open函数里去

result={‘hello’,'u’}

exec open(‘test.txt’) in result

#

selected = [] # temp list to hold matches

fp = open(‘test.txt’)

for line in fp.readlines(): # Py2.2 -> “for line in fp:”

selected.append(line)

del line # Cleanup transient variable

#

open(‘test.txt’).readlines()

file在python是一个特殊的类型,用于外部文件的操作。python中一切都是对象,file也不例外,file有file的方法和属性。

创建一个file对象:* file(name[, mode[, buffering]])

file()函数:创建一个file对象,它有一个别名叫open(),更形象一些,它们是内置函数。参数是以字符串的形式传递的。

name是文件的名字。

mode 是打开的模式,可选的值为r w a U,分别代表读(默认) 写 添加支持各种换行符的模式。用w或a模式打开文件的话,如果文件不存在,那么就自动创建。此外,用w模式打开一个已经存在的文件时,原有文件的内容会被清空,因为一开始文件的操作的标记是在文件的开头的,这时候进行写操作,无疑会把原有的内容给抹掉。由于历史的原因,换行符在不同的系统中有不同模式,比如 在 unix中是一个\n,而在windows中是‘\r\n’,用U模式打开文件,就是支持所有的换行模式,也就说‘\r’ ‘\n’ ‘\r\n’都可表示换行,会有一个tuple用来存贮这个文件中用到过的换行符。不过,虽说换行有多种模式,读到python中统一用\n代替。在模式
字符的后面,还可以加上+ b t这两种标识,分别表示可以对文件同时进行读写操作和用二进制模式、文本模式(默认)打开文件。

buffering如果为0表示不缓冲;如果为1表示进行“行缓冲“;如果是一个大于1的数表示缓冲区的大小,应该是以字节为单位的。

filfile的属性主要有:

* closed #标记文件是否已经关闭,由close()改写

* encoding #文件编码

* mode #打开模式

* name #文件名

* newlines #文件中用到的换行模式,是一个tuple

* softspace #boolean型,一般为0,据说用于print

file的其他方法:

* F.close()

#关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError

* F.flush()

#把缓冲区的内容写入硬盘

* F.fileno()

#返回一个长整型的”文件标签“

* F.isatty()

#文件是否是一个终端设备文件(unix系统中的)

* F.next()

#返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。

python的文件操作file:(内置函数,如seek、truncate函数)的更多相关文章

  1. 文件操作,内置函数open()

    先看看官方说明: The default mode is 'r' (open for reading text, synonym of 'rt'). For binary read-write acc ...

  2. python元祖操作和内置方法

    1 元祖:元祖可以理解为一个不可变的列表 2 用途:用于存放多个值,当存放的多个值只有读的需求而没有改的需求时用元祖最合适 3 定义:在()内用逗号分隔开多个任意类型的值.注意:当只有一个元素的时候, ...

  3. 【python】-- 文件操作

    一.概述 我们工作中需要经常操作文件,下面就讲讲如何用Python操作文件 1.文件操作的流程: 打开文件,得到文件句柄赋值给一个变量 通过文件句柄,对文件进行操作 关闭文件 #获取文件句柄 f = ...

  4. Python学习(八) —— 内置函数和匿名函数

    一.递归函数 定义:在一个函数里调用这个函数本身 递归的最大深度:997 def func(n): print(n) n += 1 func(n) func(1) 测试递归最大深度 import sy ...

  5. python基础12_匿名_内置函数

    一个二分查找的示例: # 二分查找 示例 data = [1, 3, 6, 7, 9, 12, 14, 16, 17, 18, 20, 21, 22, 23, 30, 32, 33, 35, 36, ...

  6. 【python之路46】内置函数2,是【python之路18】的补充

    将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析.为了方便记忆,将这些内置函数进行了如下分类: 数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作(8个 ...

  7. Python 2.7 学习笔记 内置语句、函数、标准库

    使用任何开发语言进行软件开发,都离不开语言提供的内置库(或Api),甚至说内置库的强大及使用是否方便都会影响大家对开发语言的选择. python语言,一样提供了很多内置的功能,可供开发时使用.主要有如 ...

  8. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  9. Python 常见文件操作的函数示例(转)

    转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...

随机推荐

  1. 移动端web开发中对点透的处理,以及理解fastclick如何做到去除300ms延迟

     一.点透问题以及处理办法 开发中遇到一个问题,就是点击layer弹出框的取消按钮之后,按钮下方的click事件就直接触发了.直接看代码: $('.swiper-slide').on('click', ...

  2. 记录 Python3 安装 Scrapy 遇到的问题

    开发环境:Windows 10 + Python 3 使用 pip 去安装 Scrapy,  pip install scrapy , 报了一个错误. 原因:加 --user 的作用是显式指定安装在用 ...

  3. AnyConnect使用说明(电脑版Windows)

    一.下载客户端 Anyconnect支持Windows.Mac电脑. 二.安装 1.双击打开下载的文件,点“Next”开始安装. 2.选择“I accept …”,再点下一步. 3.点“Install ...

  4. SpringMVC总结(SSM)

    Day1 1. springMvc:是一个表现层框架: 作用:就是从请求中接收传入的参数, 将处理后的结果数据返回给页面展示2. ssm整合: 1)Dao层 pojo和映射文件以及接口手动编写(或使用 ...

  5. cassandra 3.x官方文档(4)---分区器

    写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...

  6. 《Java多线程编程核心技术》推荐

    写这篇博客主要是给猿友们推荐一本书<Java多线程编程核心技术>. 之所以要推荐它,主要因为这本书写得十分通俗易懂,以实例贯穿整本书,使得原本抽象的概念,理解起来不再抽象. 只要你有一点点 ...

  7. 去除CSDN 博客页广告的历程

    第一招 方式1 方式2 第二招 第三招 素材准备 必备知识 代码部分 测试 总结 作为CSDN的忠实用户,我觉得它挺不错的.美中不足的是广告,虽然相比于微博啊,开源中国啊这些博客站点,它的广告已经算是 ...

  8. activiti 多实例任务

    1.1.1. 前言 个人,那么当5个人都投票的时候大概分为如下几种: 1.部门所有人都去投票,当所有人都投票完成的时候,这个节点结束,流程运转到下一个节点.(所有的人都需要投票) 2.部门所有人都去投 ...

  9. nginx反向代理和rewrite进行解决跨域问题、去掉url中的一部分字符串,通过nginx正则生成新的url

    场景:表面上访问的是http://127.0.0.1:7777/test/xhtml//tpl/app-tpl-webapp/css/base.css, 实际上看的是http://127.0.0.1: ...

  10. Android开发学习之路--百度地图之初体验

    手机都有gps和网络,通过gps或者网络可以定位到自己,然后通过百度,腾讯啊之类的地图可以显示我们的地理位置.这里学习下百度地图的使用.首先就是要申请开发者了,这个详细就不多讲了.http://dev ...