Python基础--day08

一、文件的操作

1、文件初识

(1)文件路径:绝对路径和相对路径

                  1)绝对路径:从根目录开始找文件

                   2)相对路径:从当前的文件夹下找文件

(2)编码方式

(3)操作方式:只读,只写,读写,写读,追加等

 (4)文件句柄:在python代码中,变量名通常为:f,f_obj,f_handler,f_h,fh等

 (5)open() :python中的内置函数,内部调用的是windows的系统命令

2、对文件的操作

1)打开文件,获取文件句柄

2)读文件句柄进行操作(read() ,write() 等)

3)关闭文件句柄(close())

open() 默认打开模式是“r” 所以可以不写

3、打开方式

读:r rb r+ r+b

r:只读(默认的打开方式,mode可以省略不写。文件必须存在且编码必须是和指定的编码方式一样,否则报错)

read() 把文件中的内容全部读取出来,注意读取出来的内容是字符串,sprit() 去除空格,换行符、制表符等

read(n)  按照指定读取字符数(换行符也属于一个字符)

readline() 读取一行

readlines() 把文件中的每一行读取出来变成列表

使用for循环,文件句柄是一个可迭代的对象。该方法较好,每次读取一行之后在内存中就删除,不占用内存,记得去换行符

如下:在d/data/content.txt

filepath = r"d:\data\contact.txt"
f = open(filepath,encoding="utf-8")
content = f.read() #全部读取
print(content)
f.close()
content = f.read(3)
print(content)
f.close()
content = f.readline()
print(content)
f.close()
content = f.readlines()
print(content)
f.close()
for line in f:
    print(line.strip())
f.close()

rb:有b的时候是不需要指定编码方式的,因为是按照bytes来进行的,如果是操作非文本的文件时就需要加上b

如:风景图.jpg

filepath = r"d:\风景照.jpg"
f = open(filepath,mode="rb")
content = f.read() #读取出来的是 b"\xxx\xxxx"
f.close()

r+ :先读后追加

先读后追加是追加在最后面,如果不读直接写,指针从开始的位置移动覆盖掉之前文件中和写入内容同样的内容

r+b :是以bytes类型操作读写

写:w wb w+ w+b

w:只写,不可读,文件不存在,先创建文件然后写入内容,文件存在,把文件中之前的内容清空然后把写入的内容写进去

f_handler = open(“文件1.txt”,encoding= "utf-8",mode="w")
f_handler.write("这是一个文件")
f_handler.close()

wb:可用来操作bytes类型的数据

w+:写读

w+b:是以bytes类型操作写读

追加:a ab a+ a+b

a:没有文件创建文件,然后写入内容,注意a是不可读的,和w有区别,a不会清空内容再添加,是直接在后面添加

ab:可用来操作bytes
a+ 写读

a+b 操作bytes

文件的其他操作方法:

readable() 判断是否是可读模式

writeable() 判断是否是可写模式

seek() 移动指针的位置  移动指针的位置是按照字节数来的

seek(0) 把指针移动到最开始的位置  seek(0,2) 把指针移动到最后

tell() 获取指针的位置

truncate() 要在有写的模式下才可以操作,在“r+”模式下是对源文件进行操作,只在"w"的模式下对源文件清空内容了。

4、文件操作的另一种方式

with open([文件路径],encoding="utf-8",mode="r") as f_read,open([文件路径],encoding="utf-8",mode="w") as f_write:
    content = f_read.read()
    f_write.write(content)

优点:

(1)上述方式不用手动关闭文件句柄,会在一定时间之类关闭

(2)可以同时开启多个句柄

5、文件的修改

1)以读的方式打开原文件,产生一个句柄

2)以写的方式创建一个新文件,产生一个句柄

3)循环原文件,修改原文件,然后写入新文件

4)删除原文件    引入模块 os  os.remove(src)

5)重命名新文件为原文件  os.rename(src,dic)

例题:

有如下文件:

-------

alex是老男孩python发起人,创建人。

alex其实是人妖。

谁说alex是sb?

你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。

----------

将文件中所有的alex都替换成大写的SB。

#for 循环
# f_read = open("文件操作4.txt",encoding="utf-8")
# f_write = open("文件操作4副本.txt",encoding="utf-8",mode="w")
# for line in f_read:
#     line = line.replace("wusir","alex")
#     f_write.write(line)
# f_read.close()
# f_write.close()
# os.remove("文件操作4.txt")
# os.rename("文件操作4副本.txt","文件操作4.txt")
# with open("文件操作4.txt",encoding="utf-8") as f_read,\
#         open("文件操作4副本.txt",encoding="utf-8",mode="w") as f_write:
#     for line in f_read:
#         line = line.replace("alex","wusir")
#         f_write.write(line)
# os.remove("文件操作4.txt")
# os.rename("文件操作4副本.txt","文件操作4.txt")

猜你喜欢

转载自www.cnblogs.com/yangshier/p/9470762.html