python IO文件处理

时间:2022-09-04 07:35:51

python的文件读写操作符有:
r

w

a

r+

w+

rb

wb

除了以file的方式打开文件,还有一种方式就是open了,两个的用法是一模一样的,可以看成open就是file的别名

下面这个表格是转自:http://blog.csdn.net/cnmilan/article/details/9142561

w

以写方式打开文件,可向文件写入信息。如文件存在,则清空该文件,再写入新内容

a

以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如果文件不存在则创建,可以追加文件内容,但是只可以写,不可以读

r+

以读写方式打开文件,可对文件进行读和写操作。下次再执行r+的时候,文件会从指针0位置开始写,写操作是默认从0位置开始写的。要是想从文件末尾追加可以使用a

w+

消除文件内容,然后以读写方式打开文件。

a+

以读写方式打开文件,并把文件指针移到文件尾。(要是文件不存在,就创建这个文件),可读可写

b

以二进制模式打开文件,而不是以文本模式。该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的。

操作文件对象方法

f.close()

关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数。

f.fileno()

获得文件描述符,是一个数字

f.flush()

刷新输出缓存

f.isatty()

如果文件是一个交互终端,则返回True,否则返回False。

f.read([count])

读出文件,如果有count,则读出count个字节。一下把整个文件的读出来,整个文件以字符串的形式显示出来,当我们执行完f.read()之后再执行f.read()会发现没有内容展现出来,那是因为我们读取文件之后,文件指针跑到末尾了,要是想重新能够读取内容,可以执行f.seek(0),把文件指针放到起始位置

f.readline()

读出一行信息。(文件内容一行一行显示出来)

f.readlines()

读出所有行,也就是读出整个文件的信息(先把文件读到内存里,所有内容以一个列表的形式展示出来)

f.seek(offset[,where])

把文件指针移动到相对于where的offset位置。where为0表示文件开始处,这是默认值 ;1表示当前位置;2表示文件结尾。

f.tell()

获得文件指针位置

f.truncate([size])

截取文件,使文件的大小为size。

f.write(string)

把string字符串写入文件。

f.writelines(list)

把list中的字符串一行一行地写入文件,是连续写入文件,没有换行(以列表的性形式写进去内容)

还有一个f.xreadlines()   相当于迭代器,循环一次读一行内容,一行一行的往内存里面读,读完一行之后扔一行,然后读取下一行,非常省内存

现在看一下下面几个循环

>>> for line in f.readlines():
...     print line,
...
ppppp
haha
gogogo
kkkkkkkkkkkkbbbb
aaaa

>>> f.close()
>>> f = file('test.txt','r')
>>> for line in f.readlines():
...     print line
...
ppppp

haha

gogogo

kkkkkkkkkkkkbbbb

aaaa
我们可以看到上面在执行print的时候两者的区别是,要是没有加逗号","的话,文件输出的时候会换行所以为了好看我们在print的时候加上一个逗号”,“

>>> f = file('test.txt','r')
>>> for line in f.readline():
...     print line,
...
p p p p p

我们在看一下f.xreadlines()

>>> f.close()
>>> f = file('test.txt','r')
>>> for line in f.xreadlines():
...     print line,
...
ppppp
haha
gogogo
kkkkkkkkkkkkbbbb
aaaa

我们肉眼看到好像f.readline 和f.xreadlines没有什么区别,但是当我们循环一个大文件的时候我们就会看到xreadlines()的性能会比readline好很多

还有一种循环就是

>>> f.close()
>>> f = file('test.txt','r')
>>> while True:
...     line = f.readline()
...     print line,
...     if not line:break
...
ppppp
haha
gogogo
kkkkkkkkkkkkbbbb
aaaa

这个性能更低,没读取一次的时候就要执行一个判断语句

例1:从文本文件中每读取一行文本便输出

我们现在来看一下下面的实例:

[root@git 628]# pwd
/root/python/python_day_practice/628

>>> f = file('test.txt','w')
>>> f.write('this is a good day!')

在终端输入上面代码,这种情况下,我们到628目录下看看有没有我们写的这个文件test.txt,我们发现是有的,但是文件里面没有内容。原因是我们写完之后没有保存,文件内容还在内存中,没写到硬盘上

这时候我们执行

>>> f.close()

我们就能看到文件test.txt文件下有内容了

我们要是想读取文件的不同行的内容的操作方法有

>>> f = file('test.txt','r')
>>> b = f.readlines()
>>> b[1]
'haha \n'
>>> b[2]
'gogogo \n'
>>>

还有一种方法就是先读取全部的内容,然后以   \n    这个字符为准,然后切片

>>> f = file('test.txt','r')
>>> c = f.readline()
>>> c.split('\n')[0]
'ppppp '

文件内容的替换()

下面还要说一种python 中的fileinput模块

>>> import fileinput(要是批量修改文件的话可以使用这个方法)

>>> for line in fileinput.input('test.txt',inplace=1):
...   line = line.replace('go','break')
...   print line,
...

把文件中的"go"换成”break“,注意这里要print 一下,不然文件中的内容不发生变化
>>> for line in fileinput.input('test.txt',inplace=1,backup='.bak'):
...   line = line.replace('back','go')
...   print line,
...

这里加了一个backup的意思就是说把原有的文件给备份一下,防止出错

假如说我们用file 或者 open的方式打开文件或者写入内容的时候。我们需要执行。f.close()关闭文件,把内容从内存中释放的硬盘中

但是现在有一种方法不需要执行f.close(),那就是with  ......   as

python 中with的作用就是自动的释放对象,

>>> with open('test7.txt','r') as f:
...     for i in f.xreadlines():
...         print i
...
123

345

456

677

577

还有一点要注意的是,我们网文件里面写内容的时候,要注意我们只能写字符串类型的,所以这里要注意了,当我们想向文件里面写数字是不行的,这里我们就得转换一下字符类型

我们可以使用str 或者是  join的方式转换,具体实例参照如下:

>>> a = 4
>>> type(a)
<type 'int'>
>>> type(str(a))
<type 'str'>

现在我们来说一下,join和split的用法

join是用来连接字符串的,刚好split的用法刚好相反,他是用来拆分字符串的

>>> a = ['1','2','3']
>>> a[1]
'2'
>>> type(a[1])
<type 'str'>
>>> ''.join(a)
'123'
>>> '*'.join(a)
'1*2*3'
>>>

现在我们来看一下split的用法

>>> b = 'my**name**is**haha'

>>> b.split("**",1)
['my', 'name**is**haha']
>>> b.split("**",4)
['my', 'name', 'is', 'haha']
>>> b.split("**")
['my', 'name', 'is', 'haha']
>>> b.split("**",2)
['my', 'name', 'is**haha']

python IO文件处理的更多相关文章

  1. python IO 文件读写

    IO 由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题. 如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这100M数据可 ...

  2. python cookboo 文件与IO 函数

    写出文本数据 g = open('test.txt', 'rt', newline='',encoding = 'utf-8', errors='replace') t是windows平台特有的所谓t ...

  3. &lbrack;python IO学习篇&rsqb; 补充&period;py文件是中文&comma; &period;ini文件内容是中文

    python 代码文件的编码.py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代 ...

  4. Python IO编程-组织文件

    对于日常中遇到的批量任务,有些可以通过请求python完成自动化,我非常渴望拥有这些能力,在去年学习了python读写文件之后,我马上迫不及待的开始学习‘组织文件’,经过学习,我发现python组织文 ...

  5. python学习 文件操作

    一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...

  6. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  7. Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)

    Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...

  8. 【转】Python之文件与目录操作(os、zipfile、tarfile、shutil)

    [转]Python之文件与目录操作(os.zipfile.tarfile.shutil) Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读 ...

  9. 【转】Python之文件读写

    [转]Python之文件读写 本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 ...

随机推荐

  1. ASP&period;NET - Web API,从简单类型到复杂类型的参数传递用例,以及传递简单string类型的解决办法

    一,简单类型的传值 比如 public Users Get(int id) ,它可以使用两种方式获取: api/default/ $.get("/api/default",{id: ...

  2. String和string的区别(C&num;)

    从位置讲: 1.String是.NET  Framework里面的String,小写的string是C#语言中的string 2.如果把using System;删掉,没有大写的String了,Sys ...

  3. Linux crontab 命令详解

    在 Linux 中,任务可以被配置在指定的时间段.指定的日期.或系统平均载量低于指定的数量时自动运行.红帽企业 Linux 预配置了对重要系统任务的运行,以便使系统能够时时被更新.譬如,被 locat ...

  4. Android L新控件RecyclerView简介

    Android L是android进化史上的里程碑,尽管还没有正式发布4.5或者5.0,但预览版也同样精彩. 这篇文章只是另外一篇博客的总结性翻译,能够读懂原文的,可以点开这个链接去阅读精彩的原文:h ...

  5. rocketmq在linux搭建双master遇到的坑

    我的环境 两台阿里云centos7服务器 首先,去官网下载解压包,解压. 然后进入bin目录,需要修改runserver.sh文件和runbroker.sh文件.因为rocketmq默认配置文件需要的 ...

  6. 《Effective C&plus;&plus;》笔记

    01:视c++为一个语言联邦 为了理解C++,必须要认识其主要的次语言: C 说到底C++仍是以C为基础.区块,语句,预处理器,内置数据类型,数组,指针统统来自C. Object-Oreinted C ...

  7. lib32asound2 &colon; Depends&colon; libc6-i386 &lpar;&gt&semi;&equals; 2&period;7&rpar; but it is not going to be installed

    sudo apt-get install -f sudo dpkg --configure -a sudo apt-get clean sudo apt-get update sudo apt-get ...

  8. JSON&period;stringify时间的问题

    使用Element UI控件el-date-picker后台传值用到JSON.stringify转换字符串传后台发现输出国际标准时间(ISO),减少了8个小时, 解决方式: 由于JSON.string ...

  9. 解决insert语句插入时,需要写列值的问题

    今天发现解决这个问题其实很简单,闲话不多谈,我直接附上语句 ) select @s = isnull(@s+',', '') + [name] from syscolumns where id = o ...

  10. ListenableFuture in Guava

    ListenableFuture的说明 并发编程是一个难题,但是一个强大而简单的抽象可以显著的简化并发的编写.出于这样的考虑,Guava 定义了 ListenableFuture接口并继承了JDK c ...