文件操作

文件的基本操作#

打开文件#

path = 'test.txt'
path = r'/home/pyvip/py_case/test.txt'
file = open(path, 'w+')
t 文本模式 (默认)
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(不推荐)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

写入文件#

# 一次性写入
file.write('Python')

# 按行写入
file.writelines([1,2,3])

读取文件#

# 一次性读取完
file.read()

# 按行读取
file.readline()
file.readlines()

查看#

 file.tell()

文件指针#

 file.tell()

关闭#

 file.close()

上下文管理器#

with open as f:
    # 各种操作

这种方法不需要close

结构化文件#

# 1.创建IO
import io
sio = io.StringIO()

# 2.写入内容
sio.write(str(i))

# 3.读取内容
sio.getvalue()

StringIO在内存中如同打开文件一样操作字符串,因此也有很多文件的方法。

当创建的StringIO调用close()方法时,在内存中的数据会被丢失

非结构化文件#

# 1.创建IO
import io
sio = io.BytesIO()

# 2.写入内容
sio.write(b'abc')

# 3.读取内容
sio.getvalue()

BytesIOStringIO类似,但是BytesIO操作的是Byte数据

常用的系统工具#

os操作系统交互#

import os

# 可以直接调用系统命令
os.system('ifconfig')

# 操作路径
os.path()
os.path.join(r'/home/chancey/', r'data')  # 路径拼接

# 操作文件目录
os.mkdir('demo')  # 创建目录
os.rename('demo', 'test')  # 重命名

os提供了PYTHON和操作系统的交互方式,只要是和操作系统相关,就可以在os模块中找方法。

更多方法传送门

shutil高级文件操作#

import shutil

# 移动文件
shutil.move

# 复制文件夹
shutil.copytree

# 删除文件夹
shutil.rmtree

shutil模块提供了许多关于文件和文件集合的高级操作。

更多方法传送门

作者:ChanceySolo

出处:https://www.cnblogs.com/chancey/p/10229479.html

版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ChanceySolo  阅读(226)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示