python 文件处理 -- 01 文件打开&读取&写入&关闭&指针

1.文件打开

1.1.文件打开方法

open(name[,mode[,buff]] ->file

name--文件路径

mode--打开方式

buff--缓冲buffer的大小

file--返回file类型的对象

重要:必须要写close()方法

1.2文件打开方式

另:

打开二进制文件(如图片)时,需使用如下方式

‘rb‘、‘wb‘、‘ab‘、‘rb+‘、‘wb+‘、‘ab+‘

2.文件读取

2.1文件读取方法

read([size])

读取size个字节,默认 读取全部。

如果size小于等于文件字节数,则返回size大小的内容,且游标在读取完之后的位置。

readline([size])

读取从当前游标算起的一行。

如果size小于当前行的字节数,则返回size大小的内容,且游标在读取完之后的位置。

readlines([size])

一次性读取完文件,返回由每一行组成的list

注意:

size其实是无用的,返回的list长度不由它决定,而是由io模块化总的io.DEFAULT_BUFFER_SIZE决定,而且不是size=3就读取3个io.DEFAULT_BUFFER_SIZE字节大小的内容

实际上不是一次性读取完文件,只是读取io.DEFAULT_BUFFER_SIZE个字节大小(如8192)的内容,然后返回由比8192稍大或相等的字节大小的内容(保证list[-1]是完整一行)所组成的列表。

iter

使用迭代器按行读取文件(推荐方法)

不受io.DEFAULT_BUFFER_SIZE的限制

>>> f=open("helloworld.py")

>>> iter_f=iter(f)

>>> line=0

>>> for i in iter_f:

...     line+=1

...

>>> line

4

3.文件写入

3.1文件写入方法

write(str)

将字符串写入文件

writelines(sequence_of_strings)

提供一个str或由str组成的迭代器,将每个str相连写入文件中

注:必须是有字符串所组成的序列,否则会报错

3.2linux写缓存

4.文件关闭

4.1为什么要关闭文件?

将缓存在内存中的文件写入到磁盘

linux中,每个进程能打开的文件数是有限的,如果超过这个限制,那么打开文件就会失败。

注:

查看某进程的限制

cat /proc/${pid}/limits

linux进程打开文件数限制

http://www.cnblogs.com/aka-blog/articles/filemax.html

4.2file.fileno()

文件描述符,用来描述当前文件被打开(未关闭)多少次。

如果超过限制,则会报错IO Error:Too many open files: ‘xx‘

5.文件指针

5.1seek()函数

移动文件指针

seek(offset[, whence]) -> None

offset--偏移量,可以为负数

whence--偏移相对位置。

可以使用0,1,2;

也可以使用OS模块的宏定义

os.SEEK_SET(文件起始位置0)

os.SEEK_CUR(文件当前位置1)

os.SEEK_END(文件结束位置2)

5.2举例

>>> f=open(‘helloworld.py‘,‘r+‘)

>>> c=f.read()

>>> c

‘helloword123\nhelloword456\nhelloword789‘

>>> f.seek(0,os.SEEK_SET)

>>> f.write(‘helloppt‘)

>>> f.seek(0,os.SEEK_SET)

>>> c=f.read()

>>> c

‘hellopptd123\nhelloword456\nhelloword789‘

>>> f.close()

时间: 2024-10-07 14:23:41

python 文件处理 -- 01 文件打开&读取&写入&关闭&指针的相关文章

Python文件使用“wb”方式打开,写入内容

Python文件使用“wb”方式打开,写入字符串会报错,因为这种打开方式为:以二进制格式打开一个文件只用于写入.如果该文件已存在则将其覆盖.如果该文件不存在,创建新文件. 所以写入的字符类型需为二进制格式,如:f.write("hello".encode('ascii')) 写入的编码范围不为128以内,就不能使用ascii了,如:fh.write("汉字".encode('UTF-8'))

python 将验证码保存到本地 读取 写入

1 #验证码 2 #读取验证码网址.打开本地路径.写入.输入验证码 3 downpicture = urllib.request.urlopen(SecretCodeUrl).read() 4 local = open(address, 'wb') 5 local.write(downpicture) 6 local.close() 7 print(u"请从桌面寻找你的验证码") 8 print (u"请输入验证码:") 9 SecretCode = input()

Python文件操作:文件的打开关闭读取写入

Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文件. 2.操作文件:读/写. 3.关闭文件. 操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件.open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象.打开后的文件只能在当前程序

以写代学:python 文件打开,写入,复制

变量=open("要打开的文件",打开方式) 打开方式有三种,读.写.执行,默认打开方式为读,若是采用写的方式,文件若存在,则清空所有内容,若不存在,则创建新的文件,例如 f = open("/bin/ls")      //加引号表示文件名,不加为变量 f.read()          //括号中为空,表示把文件中的所有都读出来,括号中有数表示"按需读取",单位为字节 f.readline(大小)      //读取文件的一行 f.readl

c文件二进制读取写入文件、c语言实现二进制(01)转化成txt格式文本、c读取文件名可变

c语言实现二进制(01)转化成txt格式文本: 下面的程序只能实现ascall对应字符转换,如果文件内出现中文字符,则会出现错误. 本程序要自己创建个文本格式的输入文件a1.txt,编译后能将文本文件前255字节以内的字符转换成相应的AscII码值的二进制表示,并存入输出文件a2.txt中.然后再将二进制文件还原并存入b2.txt文件. 参考链接:https://www.jb51.net/article/158695.htm 1 #include <cstdio> 2 #include <

python读取写入文件方法SringIO,BytesIO

python中不仅仅可以在磁盘中写入文件,还允许直接在内存中直接写入数据:需要借助StringIO和BytesIO来实现: 1.直接操作StringIO from io import StringIO #载入对象 f=StringIO() #创建变量指向对象 f.write('hello,') #写入数据 f.write(' ') f.write('world.') print(f.getvalue()) #依次打印获得的数据 getvalue()的方法用于获取写入的str 2.初始化Strin

PHP 学习笔记(三):高级教程:多维数组,日期,文件打开/读取,创建/写入,上传

PHP 多维数组 PHP - 两维数组 两维数组是数组的数组(三维数组是数组的数组的数组). 首先,让我们看看下面的表格: 我们能够在两维数组中存储上表中的数据,就像这样: $cars = array ( array("Volvo",22,18), array("BMW",15,13), array("Saab",5,2), array("Land Rover",17,15) ); 现在这个两维数组包含了四个数组,并且它有两个

有关文件读取写入 和两种文件打开模式的理解

文件有两种打开模式:文本模式和二进制模式 当c语言程序对文件操作时,先以某种模式打开文件,建立一个缓存去(读写模式下两个):缓存区中有文件的控制信息,然后用I/O函数操作文件. 对于fread和fwrite函数,不管文件是以什么模式打开的,fread和fwrite只会原样复制原始数据,而其他函数可能会对原始函数进行转化. 之后我们再用应用程序打开文件,取决于应用程序对文件的解释. 先写到这,等以后更加深一步了解了再补充.

Python xlrd、xlwt、xlutils读取、修改Excel文件

Python xlrd.xlwt.xlutils读取.修改Excel文件 一.xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文件. 首先,打开workbook:    import xlrdwb = xlrd.open_workbook('myworkbook.xls') 检查表单名字:    wb.sheet_names() 得到第一张表单,两种方式:索引和名字    sh = wb.sheet_by_index(0)s