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


什么情况下会用到文件操作呢?比如现在各种网盘的上传下载资源,各种CMS中头像上传等等。

文件操作包括文件创建、读写、复制及文件夹相关操作,具体涉及系统函数open、close及os模块。

1、open

要操作文件,首先需要建立和文件的联系,此时需要用到系统提供的函数open:打开文件返回流,抛出OSError。

def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=Tr
  • file:文件名或者文件路径+文件,我要知道打开哪个文件
  • mode:打开模式,具体模式详解表
  • buffering:缓存策略
  • encoding:编码(文本模式),编码和解码需要保持一致。
  • errors:可选性,编码错误处理方式
  • newline:指定换行符

2、相关知识点简介

2.1、文本文件和二进制文件

大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。

简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。

2.2、文件的读和写

相对于我们python可执行程序

  • 读:从文件获取信息
  • 写:把信息写入文件

2.3、模式

描述
r以只读模式打开文件,文件的指针将会放在文件的开头
rb以二进制格式打开文件,并且采用只读模式。文件的指针将会放在文件的开头。一般用于非文本文件,如图片,声音等
r+打开文件后,可以读取文件内容,也可以写入新的内容覆盖原有内容(从文件开头进行覆盖)
w以只写模式打开文件
wb以二进制格式打开文件,并且采用只写模式,一般用于非文本文件,如图片,声音等
w+打开文件后,先清空原有内容,使其变为一个空的文件,对这个空文件有读写权限
wb+以二进制格式打开文件,并且采用读写模式,一般用于非文本文件,如图片,声音等
a以追加模式打开一个文件,如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
ab以二进制格式打开文件,并且采用追加模式,如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于写入
ab+以二进制格式打开文件,并且采用追加模式,如果该文件已经存在,文件指针将放在文件的末尾(即新内容会被写入到已有内容之后),否则,创建新文件用于读写
x创建一个新文件用于写
  • 读文件,当给定的文件不存在时,会报错
  • 写文件,当给定的文件不存在时,以给定的名称新创建一个。

2.4、缓存

描述
0关闭缓存(二进制模式)
1行缓存(文本模式)
>1固定大小的块缓存

默认:

  • 二进制文件:固定大小的块缓存,大小由底层设备的块大小和io.DEFAULT_BUFFER_SIZE确定;大多数系统块大小为4096或者8192字节
  • 文本文件:交互式文本文件使用行缓存;其他同二进制文件

3、读相关函数

  • read():读取文件,返回文件内容
  • readable():文件是否可读
  • readline():读取一行
  • readlines():读取多行,返回列表

示例:

stream = open(r"i:/xx.txt")
print(stream.readable())
'''
# read
content = stream.read()
'''

'''
# readline()
while True:
    line = stream.readline()
    if not line:
        break
    print(line)
'''
lines = stream.readlines()
print(lines)
for line in lines:
    print(line)
stream.close()
  • readlines():打印的时候我没看到每行会多打印一行空行

4、写相关函数

  • writable():是否可写(修改)
  • write():写入
  • writelines():写入多行

示例:

stream = open(r"i:/w1.txt", 'w')
print(stream.writable())
s = 'hello aaa'
stream.write(s)
s = 'hello bbb'
stream.write(s)
s = '''
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
'''
stream.writelines(s)
stream.close()

追加:示例

stream = open(r"i:/w1.txt", 'a')
print(stream.writable())
s = 'sfasdfsf'
stream.write(s)
s = 'fsdafd'
stream.write(s)
s = '''
床前明月光,疑是地上霜。
举头望明月,低头思故乡。
'''
stream.writelines(s)
stream.close()

5、close

close用于关闭流,释放资源。打开文件需要占用各种系统资源,如果不及时释放,会严重浪费系统资源,严重可能导致系统崩溃。

6、with open as 变量名

语法:

with open(...) as 变量名	

该语法优点在于,不需要在执行close函数,文件操作完成之后,自动帮我们关闭流,释放资源

7、文件复制

示例:简单图片复制

with open(r'i:/1.png', 'rb') as source:
    content = source.read()
    with open(r'i:/2.png', 'wb') as target:
        target.write(content)

源代码仓库:https://gitee.com/gaogzhen/python-study

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:00:09  更:2021-12-05 12:02:01 
 
开发: 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/16 3:49:06-

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