IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python文件处理 -> 正文阅读

[Python知识库]python文件处理

python文件处理


1、什么是文件

??应用程序产生的数据首先存在内存上,内存是通过电磁进行工作的断电则数据丢失,想要数据永久存储则需将数据存放在硬盘里。硬盘是计算机的硬件之一,应用程序不能直接操作硬件,应用程序操作硬件需要调用操作系统间接操作硬件。
??文件就是操作系统提供给应用程序操作硬盘的虚拟概念(接口)。

2、文件的读写流程

2.1 打开文件

f = open(path+filename,mode="rt",encoding="utf-8")

path+filename:文件的路径+文件名字
	绝对路径:
		windows:从某个盘盘开始,比如 "D:\python\a.txt"
				注:“\”在python字符中表示转义字符,若路径中出现\n等,则路径不成立。
				替代方式:
					方式一:r"D:\python\a.txt",字符串前加 r 表示防止转义
					方式二:"D:/python/a.txt",用右斜杠代替左斜杠
					方式三:"D:\\python\\a.txt",用左双斜杠代替左斜杠
		linux:从根目录或者从家目录开始
				/home/gsf/a.txt
				/data/a.txt
	相对路径:
		以python文件为参照,比如说a.txt和python文件在同一个目录下面,则path+filename的相对路径为"a.txt",就不需要写前面的"D:/python/"
		
mode:文件读写内容,文件读写操作
	文件读写内容:t,b               默认为t
	文件读写操作:r,w,a,r+,w+,a+    默认为r

encoding:读写文件的编码方式

2.2 读/写

open打开文件只是返回一个文件对象(_io.TextIOWrapper),此时相当于文件对象与硬盘上的文件建立一个联系,真正操作文件需要对文件对象进行读和写。

读文件的方法:
	read()         读取整个文件内容(大文件,内存消耗大,可能导致程序崩溃)
	readline()     读取一行文件内容
	readlines()    读取整个文件内容,返回一个列表,列表的每一个元素便是一行文件内容(大文件,内存消耗大,可能导致程序崩溃)

写文件的方法:
	write()          写入一个字符串
	writelines()     写入一个列表,但列表元素都为字符串

2.3 关闭文件

关闭文件回收系统资源
每个系统打开文件的数量个数有限,若超过限度系统非常卡顿,同时打开多个文件并且没有关闭内存开销也非常巨大。
方法:
	close()

2.4 实例

f = open("a.txt",mode="r",encoding="utf-8")
f.read()
f.close()

3、with 上下文管理

使用with上下文管理,不再需要close()方法关闭文件,with会帮我们关闭文件,并且with可以同时管理多个文件。

with open("a.txt",mode="r",encoding="utf-8") as f:
    pass

with open("a.txt",mode="r",encoding="utf-8") as fi ,\
    open("w.txt",mode="r",encoding="utf-8") as fo :
    pass	

4、文件处理模式

4.1 文件读写操作

模式内容备注
r只读模式默认模式,若文件不存在报错。指针在行首
w只写模式若文件存在,则先清空文件所有内容,再写入新内容;若文件不存在,则建立文件。指针在行尾
a只追加写模式若文件不存在则报错;若文件存在则在末尾添加内容。指针在行尾
r+可读可写与r模式相同,增加可写
w+可读可写与w模式相同,增加可读
a+可读可写与a模式相同,增加可读

4.1.1 实例一:r

a.txt 文件内容:
gsf:123
tom:456
# 登录小程序
print("欢迎来到登录页面")
ip_name = input("请输入用户名>>>:")
ip_passwd = input("请输入密码>>>:")
with open("a.txt",mode="r",encoding="utf-8") as f:
    for line in f:
        name,passwd = line.strip().split(":")
        if ip_name == name and ip_passwd == passwd:
            print("{}登录成功!!!".format(name))
            break
        else:
            print("用户名或者密码错误!!!")

4.1.2 实例二:w

# 写入一个新文件
with open("b.txt","w",encoding="utf-8") as f:
    f.write("haha\n")
    f.writelines(["1\n","2\n","3\n"])

4.1.3 实例三:a

# 注册小程序
print("欢迎来到注册页面")
name = input("请输入用户名>>>:")
passwd = input("请输入密码>>>:")
with open("a.txt",mode="a",encoding="utf-8") as f:
    f.write("{}:{}\n".format(name,passwd))

4.2 文件读写内容

模式用法
t操作文本内容(字符串)
b操作二进制neir

t(默认的):文本模式
?? 1. 读写文件都是以字符串为单位的
?? 2. 只能针对文本文件
?? 3. 必须指定encoding参数
b:二进制模式:
?? 1.读写文件都是以bytes/二进制为单位的
?? 2. 可以针对所有文件
?? 3. 一定不能指定encoding参数
注:t,b不能单独使用,平时使用的r,w,a,其实是rt,wt,at.

5、文件操作方法

5.1 读

文件读的方法能在r,a,r+,w+,a+模式下可以使用

方法用法
read读取所有内容,执行完该操作后,文件指针会移动到文件末尾
readline读取一行内容,光标移动到第二行首部
readlines读取每一行内容,存放于列表中
# a.txt 的内容:
#     gsf:123
#     tom:456

with open("a.txt","r",encoding="utf-8") as f:
    res = f.read()
    print(res)     # gsf:123
                    # tom:456

with open("a.txt","r",encoding="utf-8") as f:
    res1 = f.readline()
    print(res1)             # gsf:123
    res2 = f.readline()
    print(res2)             # tom:456


with open("a.txt","r",encoding="utf-8") as f:
    res = f.readlines()
    print(res)  # ['gsf:123\n', 'tom:456\n']

5.2 写

方法用法
write写入一个字符串
writelines写入一个列表,列表元素都为字符串

注:当文件读写内容模式为b时,在写的时候字符串得转换成字节才可写入,否则报错。

5.3 其他操作方法

方法用法
readable判断文件是否可读
writable判断文件是否可写
closed判断文件是否关闭
encoding获取文件编码,如果文件打开模式为b,则没有该属性
flush立刻将文件内容从内存刷到硬盘
name获取文件名字

6、文件指针 seek

前面的操作模式都是被动触发指针移动,有些特殊场景需要读取某些位置内容,有时则写入特殊位置,这个时候则需要我们自己控制指针。
seek操作指针是以字节为单位。

语法:
?? seek(指针移动的字节数,模式)
| 模式 | 内容 |
|–|–|
| 0 | 以文件开头为参照 |
| 1 | 以当前指针所在的位置为参照 |
| 2 | 以文件末尾的位置为参照 |

强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用

# a.txt 的内容:
#     holle world!
with open('a.txt','rt',encoding="utf-8") as f:
    f.seek(6,0)
    res = f.read()
    print(res)     # world!

with open('a.txt','rb') as f:
    f.seek(-6,2)
    res = f.read()
    print(res)     # b'world!'

with open('a.txt','rb') as f:
    res = f.read()
    print(res)       #  b'holle world!'
    f.seek(-6,1)
    res1 = f.read()
    print(res1)      # b'world!'
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:19:02  更:2022-04-09 18:21:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:53:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码