博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python基础--day08
阅读量:5796 次
发布时间:2019-06-18

本文共 2741 字,大约阅读时间需要 9 分钟。

一、文件的操作

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")

 

转载于:https://www.cnblogs.com/yangshier/p/9470762.html

你可能感兴趣的文章
MySQL 备份与恢复
查看>>
吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本
查看>>
easyui中combobox的值改变onchang事件
查看>>
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>
02-创建hibernate工程
查看>>
information_schema系列五(表,触发器,视图,存储过程和函数)
查看>>
瓜子二手车的谎言!
查看>>
[转]使用Git Submodule管理子模块
查看>>
DICOM简介
查看>>
Scrum之 Sprint计划会议
查看>>
List<T> to DataTable
查看>>
[Java]Socket和ServerSocket学习笔记
查看>>
stupid soso spider
查看>>
svn命令在linux下的使用
查看>>
Gradle之module间依赖版本同步
查看>>