20.文件操作

20.1 文件操作的初识
f1 = open(r'C:\Users\oldboy\Desktop\学习.txt',encoding='utf-8',mode='r')
content = f1.read()
print(content)
f1.close()

open内置函数,open底层调用的是操作系统的接口。

f1,变量,f1,fh,file_handler,f_h文件句柄。对文件进行的任何操作,都得通过文件句柄的方式。

encoding:可以不写,不写参数,默认编码本:操作系统的默认的编码

windows:gbk

linux:utf-8.

mac:utf-8

f1.close()关闭文件句柄。

文件操作三部曲:

1.打开文件。

2.对文件句柄进行相应的操作。

3.关闭文件

20.2 文件操作的读

read 全部读出来

f=open('文件的读',encoding='utf-8')
content=f.read()
print(content,type(content))
f.close()

read(n)按照字符读取

f=open('文件的读',encoding='utf-8')
content = f.read(5)
print(content)
f.close()

readline()按行读取

f = open('文件的读', encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
f.close()

readlines()返回一个列表,列表中每个元素是源文件的每一行。

f = open('文件的读', encoding='utf-8')
l1 = f.readlines()
#['小刚,12,nan,大学\n', '小红,19,你,大学\n']
for line in l1:
	print(line)
print(l1)#['小刚,12,nan,大学\n', '小红,19,你,大学\n']
f.close()

for 读取

f=open('文件的读', encoding='utf-8')
['abc太白金星最帅\n', '老男孩最好的老师\n', '老男孩教育是最好的学校\n', 'fhsjdkfha\n', 'fhdsfads\n']
for line in f:
	print(line)
f.close()
f=open('tupian.jpg',mode='rb')
content=f.read()
print(content)
f.close()
20.3 文件操作的写

1.没有文件,创建文件,写入内容

f=open('文件的写',encoding='utf-8',mode='w')
f.write('随便写一点')
f.close()

2.如果文件存在,先清空源文件内容,在写入新内容

f=open('文件的写',encoding='utf-8',mode='w')
f.write('太白最帅...')
f.close()

3,wb

f = open('美女.jpg',mode='rb')
content = f.read()
# print(content)
f.close()

f1 = open('美女2.jpg',mode='wb')
f1.write(content)
f1.close()
20.4 文件的追加

没有文件创建文件,追加内容

f=open('文件的追加',encoding='utf-8',mode='a')
f.write('太白最帅....')
f.close()

有文件,在原文件的最后面追加内容

f=open('文件的追加',encoding='utf-8',mode='a')
f.write('123546.')
f.close()
20.5 文件操作的其他模式

1.r+读并追加,顺序不能错误

f = open('文件的读写', encoding='utf-8',mode='r+')
content=f.read()
print(content)
f.write('生活如此美好')
f.close()

错误示例:

f = open('文件的读写', encoding='utf-8', mode='r+')
f.write('人的一切痛苦,,,本质都是对自己无能的愤怒,,,')
content = f.read()
print(content)
f.close()

2.w+ 写读

f= open("day8",mode="w+",encoding="utf-8")
f.write("你您你你")
f.seek(0)需要把鼠标归零位
print(f.read())
f.close()

3.a+ 追加写读

1.
f = open("a",mode="a+",encoding="gbk")
print(f.tell())#查看的是字节
f.seek(0) #需要先将鼠标回到零位
print(f.read(1))#字符
f.write('没太大用')此时直接覆盖
f.close()
2,
f = open("a",mode="a+",encoding="gbk")
print(f.tell())#查看的是字节
f.seek(0) #需要先将鼠标回到零位
print(f.read(1))#字符
f.seek(0,2)#将鼠标归到最后的位置
f.write('可直接在后面添加')
f.close()
20.6 光标其他操作:

查看光标:tell()返回值,返回的就是当前光标的位置

移动光标:

​ seek(0,0) 文件开始位置

​ seek(0,1)光标的当前位置

​ seek(0,2)文件末尾位置

​ seek(3) 按照字节调节 使用utf-8 是3 gbk是2

20.7 文件操作的其他功能

1.tell获取光标的位置,单位字节。

f=open('文件的读写',encoding='utf-8')
print(f.tell())
content=f.read()
print(content)
print(f.tell)
f.close()

2.seek调整光标的位置

f=open('文件的读写',encoding='utf-8')
f.seek(7)
content=f.read()
print(content)
f.close()

3.flus强制刷新

f=open('文件的读写',encoding='utf-8',mode='w')
f.write('1232445')
f.flush()
f.close()
20.8 打开文件的另一种方式

优点:不用手动关闭文件句柄

with open('文件的读',encoding='utf-8') as f1:
    print(f1.read()
with open('文件的读', encoding='utf-8') as f1,\
        open('文件的写', encoding='utf-8', mode='w')as f2:
    print(f1.read())
    f2.write('hfdsjkghkajhsdjg')
20.9 文件改的操作

1, 以读的模式打开原文件。
2,以写的模式创建一个新文件。
3,将原文件的内容读出来修改成新内容,写入新文件。
4,将原文件删除。
5,将新文件重命名成原文件。

low版

import os
# 1, 以读的模式打开原文件。
# 2,以写的模式创建一个新文件。
with open('alex自述',encoding='utf-8') as f1,\
    open('alex自述.bak',encoding='utf-8',mode='w') as f2:
# 3,将原文件的内容读出来修改成新内容,写入新文件。
    old_content = f1.read()
    new_content = old_content.replace('alex', 'SB')
    f2.write(new_content)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')

进阶版

import os
# 1, 以读的模式打开原文件。
# 2,以写的模式创建一个新文件。
with open('alex自述',encoding='utf-8') as f1,\
    open('alex自述.bak',encoding='utf-8',mode='w') as f2:
# 3,将原文件的内容读出来修改成新内容,写入新文件。
    for line in f1:
        # 第一次循环 SB是老男孩python发起人,创建人。
        new_line = line.replace('SB', 'alex')
        f2.write(new_line)
os.remove('alex自述')
os.rename('alex自述.bak','alex自述')
posted @ 2019-06-18 20:59  God_with_us  阅读(183)  评论(0编辑  收藏  举报