Python菜鸟编程第五课之文件操作

1文件操作

一个换行符占一个字节。

1.1文件的打开–open()

格式:

file_object=open(file,[,mode],[,encoding],[,buffering])

解释:

  • file_object:open()返回的文件对象
  • file:要打开的文件
  • mode:指定模式(只读,写入,追加等等。默认只读)
  • encoding:指定文件编码,通常为:‘utf-8/gbk’
  • buffering:若设置为0,不会有寄存;设为1,访问文件时会寄存行;设置为大于1的数,表明是寄存区的缓冲大小;设置为负数时,则缓存区的大小为系统默认。

mode

描述

r

只读,指针在文本最前(0,0),只能进行读,不可写,这是默认模式

rb

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

r+

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

rb+

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

w

写,指针在文本最前(0,0),如果没有目标文本,会新建一个空目标文本;如果有,会清除目标文本中的所有内容,相当于新建一个空的目标文本后替换原文本

wb

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

w+

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

wb+

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

a

追加,如果有目标文本,指针会跳到文本的最后;如果没有找到,同w模式会新建一个空的文本。``

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

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

ab+

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

文件的属性

属性

描述

name

返回文件的名称

mode

返回打开文件访问模式

closed

如果文件已关闭,返回True,否则false

demo:

f = open('file/GreenFlowerPorcelain.txt', 'r')
print(f.read())
print(f.name)
print(f.mode)
print(f.closed)
f.close()
print(f.closed)
运行结果:
 1 Green Flower Porcelain
 2 You are the face that has changed my whole world.
 3 You are the face that I see everywhere I go.
 4 You are so beautiful to me that I can't explain ,
 5 Just like a green flower porcelain.
 6 You're like a moon that I awaken to say hello,
 7 So beautiful and bright that you make me content to play it so.
 8 I see your face on the leaves,telling me how lonely I have been.
 9 This is a dream of mine that I have just dreamed.
10 Just see your smiling face everywhere I go.
11 The love I feel for you to shine inside me.
12 But it's all over now you're gone.
file/GreenFlowerPorcelain.txt
r
False
True

1.2文件的读写–>read()/write()

函数名

描述

f.read(size)

从文件中读取指定的字节数,若未指定,读取所有。size输入字节数

f.readline()

读取整行,包括"\n"

f.readlines()

读取所有行,并返回列表

f.write()

将字符串写入文件,并返回字符串长度。

f.writelines()

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

f.flush()

刷新文件缓存,直接把内部缓冲的数据写入文件

1.21文件的读

demo1:

#read()
f = open('file/GreenFlowerPorcelain.txt', 'r')
print(f.read(20))
print(f.read(20))
f.close()
运行结果:
 1 Green Flower Porc#包括空格,总共20个字节,指针停留在当前位置
    elain        #从上面结果的指定位置开始输出,这里换行是因为文件本身有个换行符
 2 You are the

demo2:

#readline()
f = open('file/GreenFlowerPorcelain.txt', 'r')
f1=f.readline()
f2=f.readline()
f3=f.readline()
print(f1)
print(f2)
print(f3)
f.close()
运行结果:
 1 Green Flower Porcelain

 2 You are the face that has changed my whole world.

 3 You are the face that I see everywhere I go.

demo3:

#readlines()
f = open('file/GreenFlowerPorcelain.txt', 'r')
fl=f.readlines()
print(fl)
print(len(fl))
f.close()
运行结果:
运行结果:
[' 1 Green Flower Porcelain\n', ' 2 You are the face that has changed my whole world.\n', ' 3 You are the face that I see everywhere I go.\n', " 4 You are so beautiful to me that I can't explain ,\n", ' 5 Just like a green flower porcelain.\n', " 6 You're like a moon that I awaken to say hello,\n", ' 7 So beautiful and bright that you make me content to play it so.\n', ' 8 I see your face on the leaves,telling me how lonely I have been.\n', ' 9 This is a dream of mine that I have just dreamed.\n', '10 Just see your smiling face everywhere I go.\n', '11 The love I feel for you to shine inside me.\n', "12 But it's all over now you're gone."]
12

demo4:

f = open('file/GreenFlowerPorcelain.txt', 'r')
print(f.tell())
for i in f:
    print(i.strip())  # 移除字符串前后的字符,默认为空格
print(f.tell())
f.close()
运行结果:#使用for循环遍历文件后,指针位置也会跟随移动到文件末尾。txt文件中有换行符,这里使用strip()函数将其移除。
0#指针的初始位置
1 Green Flower Porcelain
2 You are the face that has changed my whole world.
3 You are the face that I see everywhere I go.
4 You are so beautiful to me that I can't explain ,
5 Just like a green flower porcelain.
6 You're like a moon that I awaken to say hello,
7 So beautiful and bright that you make me content to play it so.
8 I see your face on the leaves,telling me how lonely I have been.
9 This is a dream of mine that I have just dreamed.
10 Just see your smiling face everywhere I go.
11 The love I feel for you to shine inside me.
12 But it's all over now you're gone.
599#指针的最后位置

1.22文件的写

demo1:

f = open('file/青花瓷.txt', 'a+',encoding='utf8')
f.seek(0)#使指针回到文件的开头,因为'a+'默认将指针移到文件末尾
print(f.read())
f.write('aaa')
f.seek(0)
print(f.read())
f.close()
运行结果:
 1 青花瓷
 2 素胚勾勒出青花笔锋浓转淡
 3 瓶身描绘的牡丹一如你初妆
 4 冉冉檀香透过窗心事我了然
 5 宣纸上走笔至此搁一半
 6 釉色渲染仕女图韵味被私藏
 7 而你嫣然的一笑如含苞待放
 8 你的美一缕飘散
 9 去到我去不了的地方
10 天青色等烟雨
11 而我在等你
12 炊烟袅袅升起
 1 青花瓷
 2 素胚勾勒出青花笔锋浓转淡
 3 瓶身描绘的牡丹一如你初妆
 4 冉冉檀香透过窗心事我了然
 5 宣纸上走笔至此搁一半
 6 釉色渲染仕女图韵味被私藏
 7 而你嫣然的一笑如含苞待放
 8 你的美一缕飘散
 9 去到我去不了的地方
10 天青色等烟雨
11 而我在等你
12 炊烟袅袅升起aaa

demo2:

f = open('file/GreenFlowerPorcelain.txt', 'rb')
print(f.read(10))
print('wz',f.tell())
f.seek(-5,1)
print('wz',f.tell())
print(f.read(50))
print('wz',f.tell())
f.close()
运行结果:
b' 1 Green F'
wz 10
wz 5 #从当前位置,往前偏移5个字符所以指针处于5
b'een Flower Porcelain\r\n 2 You are the face that has'
wz 55

1.3文件的关闭–>close()

文件打开后都需要关闭,以免浪费内存空间。

还有一个方法,with as语法,会自动关闭文件

demo:

with open('file/GreenFlowerPorcelain.txt', 'r') as f:
    print(f.read())
print(f.closed)
运行结果:
 1 Green Flower Porcelain
 2 You are the face that has changed my whole world.
 3 You are the face that I see everywhere I go.
 4 You are so beautiful to me that I can't explain ,
 5 Just like a green flower porcelain.
 6 You're like a moon that I awaken to say hello,
 7 So beautiful and bright that you make me content to play it so.
 8 I see your face on the leaves,telling me how lonely I have been.
 9 This is a dream of mine that I have just dreamed.
10 Just see your smiling face everywhere I go.
11 The love I feel for you to shine inside me.
12 But it's all over now you're gone.
True

1.4文件的定位

函数名

描述

f.seek(offset[,from])

设置文件的当前位置,即指针位置,from=0时,文件开头位置,from=1当前位置,from=2文件末尾

f.tell()

返回文件的当前位置,即指针位置