Day8 文件处理

大憨熊 提交于 2020-04-04 00:06:27

文件处理

文件操作初识

文件路径:d:ake.txt

编码方式:utf-8,gbk,GB2312....

操作方式:只读,只写,写读,读写,追加 等。

报错原因:

        UnicodeDecodeError: 'gb2312' codec can't decode byte 0xa6 in position 2: illegal multibyte sequence

        编码不一致,存储文件时编码与打开文件时编码不一致。

        r'd:\ake.txt ‘ 路径问题

        1,在路径的最前面,+ r

        2,每个\ 变成 \\

绝对路径: d:\ake.txt 从根目录开始找

相对路径: 当前目录,当前文件夹。

读:

r  只读模式

read 一次性都读出来
f =open("ake",encoding="utf-8",mode="r")
content = f.read(5) # 读取文件里的5个字符
print(content)
f.close()

readline 按行读取
f = open("ake",encoding="utf-8",mode="r")
print(f.readline()) # 打印第一行字符串
f.close()

readlines 按行读出来,并将其放在一个列表中
f = open("ake",encoding="utf-8",mode="r")
content = f.readlines()
for i in range(len(content)):  # 循环列表
    content[i] = content[i].strip()  # 通过索引去掉每个元素的空格跟换行符
print(content)
f.close()for循环
f = open("文件操作1",encoding="utf-8")
for i in f:
    print(i.strip())
f.close()

  

r+ 读写模式

rb  文件凡是操作带b字母,都是与非文字类文件相关的

f = open(r"D:\Qishijihua\视频\day08\day08\美女1.jpg",mode="rb")  # r 为转义字符
content = f.read()
print(content)
f.close()

f = open("文件操作1",encoding="utf-8",mode="r+")  
content = f.read()  # 先读
print(content)
f.write("666")  # 再写
f.close()
# 如果不读直接写会覆盖

  

w 写模式,没有文件创建文件也要写

wb 非文字类写入

w+ 读写,先读后写

w
f = open("种子.txt",encoding="utf-8",mode="w")
f.write("www.hao123.com")
f.close()

wb
f = open(r"D:\Qishijihua\视频\day08\day08\美女1.jpg",mode="rb")
content = f.read()
print(content)
f1 = open("美女2.jpg",mode="wb")
f1.write(content)
f.close()
f1.close()

w+
f = open("ake",encoding="utf8",mode="w+")
f.write("我爱python")
content = f.read()
print(content)
f.close()

  

追加

没有文件创建文件也要写。有文件直接在文件后面追加

a+ 写读

a
f = open("文件操作",encoding="utf-8",mode="a")
f.write("\n我爱北京天安门")
f.close()

a+
f = open("文件操作",encoding="utf-8",mode="a+")
content = f.write("\n天安门上太阳升")
print(content)
f.close()

  

   

  1,以读的模式打开原文件,产生一个文件句柄f1.

  2,以写的模式创建一个新文件,产生一个文件句柄f2.

  3,读取原文件内容,进行修改,并将修改后的写入新文件。

  4,将原文件删除。

  5,将新文件重命名成原文件。

import os
with open('ake','r',encoding='utf-8') as f1,\
    open("ake.bak",'w',encoding='utf-8') as f2:
    con=f1.read()
    new_con=con.replace("的",'得')
    f2.write(new_con)
os.remove("ake")
os.rename('ake.bak','ake')

import os
with open('alex.txt','r',encoding='utf-8') as f14,\
    open('alex.bak','w',encoding='utf-8') as f15:
    for line in f14:
        line.replace('alex','SB')
        f15.write(line)
os.remove('alex.txt')
os.rename('alex.bak','alex.txt')

  

 

其他方法:

  1,seek  调整光标,seek(0)调整到开始,seek(0,2)调整到结尾。按字节移动

  2,readale  是否可读

  3,writable  是否可写

  4,with 主动关闭文件句柄

  5,os.remove  删除文件名

  6,os.rename  修改文件名

  7. truncate 截取

r+ a+ ..不能在w模式下使用,对原文件进行截取
f=open('ake','r+',encoding='utf-8')
f.truncate(9) #字节
f.close()

  

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!