Python基础——文件操作
Posted ojia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础——文件操作相关的知识,希望对你有一定的参考价值。
Python3 File
首先贴上该方法的基本传入参数:
def open(file, mode=‘r‘, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
在实际操作中,我们比较常用的是files,mode和encoding这3个参数
让我逐个介绍:
- file:我们要打开的文件的绝对路径,比如:“E:读书python8月 815博客园实例xxx.xx”
- mode: 以什么方式打开
- r :只读模式【默认模式,文件必须存在,不存在则抛出异常】
- w:只写模式【不可读;不存在则创建;存在则清空内容】
- a:追加模式【可读; 不存在则创建;存在则只追加内容】,文件指针自动移到文件尾。
- "+" 表示可以同时读写某个文件
- r+:读写【可读,可写】
- w+:写读【可读,可写】,消除文件内容,然后以读写方式打开文件。
- a+:写读【可读,可写】,以读写方式打开文件,并把文件指针移到文件尾。
- "b"表示以字节的方式操作,以二进制模式打开文件,而不是以文本模式。
- rb:以二进制模式读取
- wb:以二进制模式写入
-
encoding:以什么编码打开,这个要注意,假如打开的编码和实际的编码不相同会出现乱码现象
接下来会详细介绍每个操作
读文件
f = open("File.txt","r",encoding="utf-8") print(f.read()) """运行结果 这是测试文件的第一行 First 998 """
当不知道文件编码的时候
import chardet f = open("File.txt", "rb") data = f.read() print(chardet.detect(data)) # 运行结果:{‘encoding‘: ‘utf-8‘, ‘confidence‘: 0.99, ‘language‘: ‘‘} # 当我们不知道文件编码格式的时候,我们可以导入chardet这个模块 # 使用其detect方法,会返回一个字典,confidence就是代表我们encoding的值的编码正确的概率 encoding = chardet.detect(data)["encoding"] print(data.decode(encoding))
写文件
f = open("File.txt", "w", encoding="utf-8") f.write("这是插入的新内容") f.close() f = open("File.txt", "r", encoding="utf-8") print(f.read()) # 运行结果:这是插入的新内容 f.close() # 当插入新内容时,文件会删除之前的全部内容,重新写入内容
追加
f = open("File.txt", "a", encoding="utf-8") f.write("这是新内容。") f.close() f = open("File.txt", "r", encoding="utf-8") print(f.read()) # 运行结果:这是旧的内容。这是新内容。 f.close()
读写模式
f = open("File.txt", "r+", encoding="utf-8") print(f.read()) # 结果是:这是旧的内容。这是新内容。 f.write("这是更新的内容。") f.flush() # 立刻将文件内容从内存刷到硬盘 print(f.read()) # 结果是:这是旧的内容。这是新内容。这是更新的内容。 f.close()
写读模式
f = open("File.txt", "w+", encoding="utf-8") print(f.read()) # 结果是:不打印任何东西 f.write("这是更新的内容。") print(f.read()) #结果是:在原文件看见:“这是更新的内容。” 这个写读模式只可以读写入的内容 f.close()
文件操作常用方法
# 打开文件方法1:open() f = open("File.txt", "r+") # 打开文件方法2:with open() 这种方法操作完成后,会自动关闭不需要close() with open("File.txt", "r+") as f: f.read() # 读取文件内容(可指定每次读取字字符) f = open(‘File.txt‘, ‘r‘, encoding=‘utf-8‘) ret = f.read(8) print(ret) # 结果是:这是File文件 # 读取数据(可指定读取字符数),存为list显示 f = open(‘File.txt‘, ‘r‘, encoding=‘utf-8‘) ret = f.readlines() print(ret) # 结果是:[‘这是File文件里面的内容。 ‘, ‘Test‘] f.close() # 读取一行数据 f = open(‘File.txt‘, ‘r‘, encoding=‘utf-8‘) ret = f.readline() print(ret) # 结果是:这是File文件里面的内容。 f.close() # 判断是否可读(不可读则报错" No such file or directory: ") f = open(‘File.txt‘, ‘r‘, encoding=‘utf-8‘) ret = f.readable() print(ret) # 结果是:#True f.close() # 指定文件中指针的位置 f = open(‘File.txt‘, ‘r‘, encoding=‘utf-8‘) ret = f.read(8) # 先读取8个字符 print(ret) # 结果是:这是File文件 f.seek(0) # 然后把指针移动到文件开头处 ret = f.read(8) # 在重新读取 print(ret) # 结果是:这是File文件 f.close() # 获取指针位置 f = open(‘File.txt‘, ‘r‘, encoding=‘utf-8‘) ret = f.read(8) # 先读取8个字符 print("pointer position:%s" % f.tell()) # 查看当前指针位置 结果是:pointer position:16 print(ret) f.seek(0) # 重置指定到启始位 print("pointer position:%s" % f.tell()) # 在查看指针位置 结果是:pointer position:0 f.close() # 刷新文件内部缓冲区 f.flush()
以上是关于Python基础——文件操作的主要内容,如果未能解决你的问题,请参考以下文章