二周五次课(10月27日)

1.读取文件内容

文件操作需要3步:

1.1 open文件

1.2 文件操作(读或者写)

1.3 关闭文件


例子:

import codecs
f = codecs.open('1.txt')
print(f.read())
f.close()

结果:

111
aaaa
5gbj677ddd

注:codecs类是解决文件乱码的问题。


2.写入一个新的文件

open(filename, mode)

mode有几个参数:

r——读

w——写

b——二进制

a——追加


例子:

import codecs
f = codecs.open('2.txt', 'wb')
f.write('hello world!\n')
f.write('I love you!\n')
f.close()

结果:新建了文件2.txt,内容如下:

hello world!
I love you!

注:\n是换行


3.With的特殊用法

有时候,我们可能在编码的时候忘记关闭文件,这个就有点不完美了,如果有太多的文件没有关闭,这个会对系统造成压力,那有没有什么方法,在我们不用文件的时候直接给我们自动关闭文件呢?

例子:

import codecs
with codecs.open('1.txt', 'rb') as f:
    print(f.read())

结果:

111
aaaa
5gbj677ddd

with的方法在我们平时工作的开发过程中是最常用的,他简单方便,支持快速开发,不需要考虑文件关闭的情况。


4.Codecs的特殊使用

codecs类是解决文件乱码的问题。


例子:

import codecs
f = codecs.open('1.txt')
print(f.read())
f.close()

结果:

111
aaaa
5gbj677ddd


5.文件操作的常用方法

file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:

序号方法及描述
1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False。

5

file.next()

返回文件下一行。

6

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizehint])

读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比sizhint较大, 因为需要填充缓冲区。

9

file.seek(offset[, whence])

设置文件当前位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

截取文件,截取的字节通过size指定,默认为当前文件位置。

12

file.write(str)

将字符串写入文件,没有返回值。

13

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。


readline()方法用来打印文件的一行内容:

import codecs
with codecs.open('1.txt', 'rb') as f:
    print(f.readline())

结果:

111

readlines()方法,读取文件,最后把文件每行的内容作为一个字符串的单个元素,放在一个list中。

import codecs
with codecs.open('1.txt', 'rb') as f:
    print(f.readlines())

结果:

['111\r\n', 'aaaa\r\n', '5gbj677ddd\r\n']


next()方法读取文件下一行内容,返回一个字符串

import codecs
with codecs.open('1.txt', 'rb') as f:
    print(f.next())

结果:

111