python学习——python中的文件处理

python对文件的处理。

python对文件的处理的两个内建函数:

open()、file(),这个两函数提供了初始化输入\输出(I\O)操作的通用接口。两函数的功能相同。

基本用法:

file_object=open(filename, access_mode='r', buffering=-1)

file_object 是定义一个打开文件的对象

access_mode 是打开文件的模式;通常,文件使用模式 'r','w','a' 来打开,分别代表,读取,写入,追加。

'r' 模式打开已经存在的文件

'w' 模式打开的文件若存在则首先清空,再加入内容。

'a' 这个模式是追加内容到文件中

注. 'b' 模式这个是打开二进制文件,对于unix-like/unix类型的系统'b'模式是可有可无的。

buffering 访问文件所采用的缓冲方式。其中0表示不缓冲,1表示只缓冲一行数据,任何其它大于1的值代表使用给定的值作为缓冲区大小。不给定此参数或者参数为负数都表示使用系统默认的缓冲机制。


常用的文件访问方式如下:

r        以读方式打开

rU或Ua   以读方式打开同时提供通用换行符支持

w        以写方式打开

a        以追加方式打开

r+       以读写方式打开

w+       以读写方式打开

a+       以读写方式打开


文件的输入:

python中有三个方法来处理文件内容的输入:

read() 一次读取全部的文件内容。

readline() 每次读取文件的一行。

readlines() 读取文件的所有行,返回一个字符串列表。


分别举例说明一下:

read():

1
2
3
4
5
6
7
8
>>> f = open ( 'f.sh' )
>>> ff = f.read()   #以read()方法取得文件全部内容。
>>> print ff
#!/bin/bash
for i in {a,test,bak};do
     echo $i
done
>>>


readline():

1
2
3
4
5
>>> f = open ( 'f.sh' )
>>> file = f.readline()
>>> print file
#!/bin/bash
>>>

每次打印都会显示出文件内容的第一行,如要显示文件的所有内容,则加一个while循环。如下所示:

1
2
3
4
5
6
7
8
9
10
11
>>> while 1 :
...     file = f.readline()
...     if file :
...             print file
...     else :
...             break
...
for i in {a,test,bak};do
     echo $i
done
>>>

这样就显示出文件的所有内容了。

readlines():

1
2
3
4
>>> f = open ( 'f.sh' )
>>> file = f.readlines()
>>> print file
[ '#!/bin/bash \n' , 'for i in {a,test,bak};do\n' , '\techo $i\n' , 'done\n' ]   #文件内容以字符串列表的形式显示出来。

如果要正常的显示出文件来可以用eachLine这个参数,此参数代表文本文件的一行(包括末尾的换行符)

1
2
3
4
5
6
7
8
9
10
11
>>> for eachLine in file :
...     if eachLine:
...             print eachLine
...     else :
...             print "failed"
...
#!/bin/bash
for i in {a,test,bak};do
     echo $i
done
>>>

也可以这样来读取文件内容:

1
2
3
4
5
6
7
8
9
10
11
12
>>> f = open ( 'f.sh' )
>>> file = f.readlines()
>>> print file
[ '#!/bin/bash \n' , 'for i in {a,test,bak};do\n' , '\techo $i\n' , 'done\n' ]
>>> for i in range ( len ( file )):
...     print file [i]
...
#!/bin/bash
for i in {a,test,bak};do
     echo $i
done
>>>

下面来说一下文本文件的输出 write.先看一下例子:

1
2
3
4
5
6
7
8
9
10
>>> f = open ( 'a' , 'w' )
>>> s = 'This is a new line.'
>>> f.write(s)
>>> f.close()
来读取一下这个刚创建的文件
>>> f = open ( 'a' )
>>> file = f.read()
>>> print file
This is a new line.
>>>

再来说一下python中在文本文件内容移动的操作,主要是用到seek()这个函数。以例子说明一下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
>>> f = open ( 'a' , 'w+' )      #'w+' 表示,文件以可读可写模式打开。
>>> f.tell()                #用tell()方法来记录打开文件的位置。初始的位置0
0
>>> f.write( 'test line 1\n' ) #向文件中写入新的一行。
>>> f.tell()
12                           #显示出移动的位置。
>>> f.write( 'test line 2\n' ) #再向文件中加入新的一行。
>>> f.tell()
24                           #显示出移动的位置。
>>> f.seek( - 12 , 1 )            #向后移动12个字节的位置。应该移动到文件内容的第二行的开头
>>> f.tell()
12
>>> f.readline()             #用readline()方法读取当前位置时的文件内容。
'test line 2\n'              #显示的是文件的第二行,可见readline()方法读取的是当前位置以后的内容。
>>> f.seek( 0 , 0 )              #回到文件的开始位置
>>> f.readline() 
'test line 1\n'              # 显示文件的第一行。
>>> f.tell()
12                           #此时位置在第二行的开始处。
>>> f.readline()
'test line 2\n'
>>> f.tell()
24                           #此时又到了文件第三行的开始处了。
>>> f.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值