python 文档操作_Python 文档操作

Python 文档操作主要包括打开文档、读文档、写文档、修改文档、关闭文档等操作,还会写一些基本操作方法。

打开文档 - open()

在 python,使用 open 函数,可以打开一个已经存在的文档,或者创建一个新文档

open(文档名,访问模式)

示例如下:

1

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

访问模式

说明

r

以只读方式打开文档。文档的指针将会放在文档的开头。这是默认模式。

w

打开一个文档只用于写入。如果该文档已存在则将其覆盖。如果该文档不存在,创建新文档。

a

打开一个文档用于追加。如果该文档已存在,文档指针将会放在文档的结尾。如果该文档不存在,创建新文档进行写入。

rb

以二进制格式打开一个文档用于只读。文档指针将会放在文档的开头。这是默认模式。

wb

以二进制格式打开一个文档只用于写入。如果该文档已存在则将其覆盖。如果该文档不存在,创建新文档。

ab

以二进制格式打开一个文档用于追加。如果该文档已存在,文档指针将会放在文档的结尾。如果该文档不存在,创建新文档进行写入。

r+

打开一个文档用于读写。文档指针将会放在文档的开头。

w+

打开一个文档用于读写。如果该文档已存在则将其覆盖。如果该文档不存在,创建新文档。

a+

打开一个文档用于读写。如果该文档已存在,文档指针将会放在文档的结尾。文档打开时会是追加模式。如果该文档不存在,创建新文档用于读写。

rb+

以二进制格式打开一个文档用于读写。文档指针将会放在文档的开头。

wb+

以二进制格式打开一个文档用于读写。如果该文档已存在则将其覆盖。如果该文档不存在,创建新文档。

ab+

以二进制格式打开一个文档用于追加。如果该文档已存在,文档指针将会放在文档的结尾。如果该文档不存在,创建新文档用于读写。

关闭文档 - close()

1

2

3

4

5

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

f.close()

写文档 - write()

1

2

3

4

f = open('text.txt', 'w')

>>>f.write('hello!')

6

>>>f.close()

读文档 - read()

使用 read(num) 可以从文档中读取数据,num 表示要从文档中读取的数据的长度(单位是字节),如果没有传入 num ,那么就表示读取文档中所有的数据。

1

2

3

4

5

>>>f = open('text.txt', 'r')

>>>content = f.read()

>>>content

'hello!'

>>>f.close()

读数据 - readlines()

readlines 可以按照行的方式把整个文档中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

1

2

3

4

>>>f = open('text.txt', 'r')

>>>result = f.readlines()

>>>result

['hello!n', 'worldn', 'hahan']

读数据 - readline()

1

2

3

4

5

6

7

>>>f = open('text.txt', 'r')

>>>f.readline()

'hello!n'

>>>f.readline()

'worldn'

>>>f.readline()

'hahan'

处理大文档

一般的读取,readlines()、read() 等会将整个文档加载到内存中。在文档较大时,往往会引发 MemoryError(内存溢出)。本人试了用 readlines() 读取一个 2G 大小的日志文档,结果本子直接跑挂。

处理方法一般有以下几种:

逐行读取

1

2

3

4

5

while True:

line = f.readline()

if not line: # 到 EOF,返回空字符串,则终止循环

break

do_something(line)

使用 with 结构

with 语句句柄负责打开和关闭文档(包括在内部块中引发异常时),for line in f 对可迭代对象 f 进行迭代遍历,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文档的问题。

这也是较为推荐使用的方法。

1

2

3

with open(filename, 'rb') as f:

for line in f:

文档的随机读写

获取当前读写的位置 - tell()

在读写文档的过程中,如果想知道当前的位置,可以使用 tell() 来获取。

1

2

3

4

5

6

7

8

9

10

11

12

>>>f = open('/mnt/d/download/catalina.out','r')

>>>str = f.read(3)

>>>str

'Apr'

>>>str = f.read(30)

>>>str

' 25, 2017 10:54:11 AM org.apac'

>>>f.tell()

33

>>>str = f.read(200)

>>>f.tell()

233

定位到某个位置 - seek()

如果在读写文档的过程中,需要从另外一个位置进行操作的话,可以使用 seek()。

seek(offset, from):

offset - 偏移量

from - 方向0 - 表示文档开头

1 - 表示当前位置

2 - 表示文档末尾

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

>>>f = open('/mnt/d/download/catalina.out','r')

>>>f.read(30)

'Apr 25, 2017 10:54:11 AM org.a'

>>>f.tell()

30

# 把位置设置为:从文档开头,偏移6个字节

>>>f.seek(6,0)

6

>>>f.tell()

6

# 把位置设置为:离文档末尾,20个字节处,需要已rb模式打开

>>>f = open('/mnt/d/download/catalina.out','rb')

>>>f.seek(-20,2)

2238539151

>>>f.read(10)

b'ged at DEB'

>>>f.read(10)

b'UG level.n'

文档重命名 - os.rename('srcFile', 'destFile')

os 模块中的 rename() 可以完成对文档的重命名操作

删除文档 - os.remove('fileName')

文档夹的相关操作

创建文档夹 - os.mkdir('dirName')

获取当前目录 - os.getcwd()

改变目录 - os.chdir('../')

获取目录列表 - os.listdir('./')

删除文档夹 - os.rmdir('dirName'),不能删除非空目录

1

2

3

4

5

6

7

8

9

10

11

12

>>>os.getcwd()

'/mnt/d/code/Python/itcast'

>>>os.mkdir('test')

>>>os.chdir('test')

>>>os.listdir('.')

[]

>>>os.chdir('../')

>>>os.listdir('./')

['07day_1.py', '07day_2.py', '07day_3.py', '1_1.py', 'func.py', 'test']

>>>os.rmdir('test')

>>>os.listdir('./')

['07day_1.py', '07day_2.py', '07day_3.py', '1_1.py', 'func.py']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值