Python 文件操作-1

目录

打开文件

OS库


打开文件

open()方法

Python 的 open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError

注意: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

open 函数常用形式是接收两个参数:文件名(file)和模式(mode

open(file, mode='r')

完整的语法格式为:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 必需,文件路径(相对或者绝对路径)
  • mode: 可选,文件打开模式(默认只读)
  • buffering: 设置缓冲
  • encoding: 一般使用utf8
  • errors: 报错级别
  • newline: 区分换行符
  • closefd: 传入的 file 参数类型
  • opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

mode 参数有:

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

默认为文本模式,如果要以二进制模式打开,加上 b


file 对象

file 对象使用 open() 函数来创建,下表列出了 file 对象常用的函数:

方法描述
file.close()关闭文件。关闭后文件不能再进行读写操作。
file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno()返回一个整型的文件描述符(file descriptor FD 整型)可以用在如 os 模块的 read() 方法等一些底层操作上。
file.isatty()如果文件连接到一个终端设备返回 True,否则返回 False
file.next()Python 3 中的 File 对象不支持 next() 方法。 返回文件下一行。
file.read(size)从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline(size)读取整行,包括 \n 字符。
file.readlines(sizeint)读取所有行并返回列表,若给定 sizeint > 0,返回总和大约为 sizeint 字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。
file.seek(offset, whence)移动文件读取指针到指定位置。
file.tell()返回文件当前位置。
file.truncate(size)从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Windows 系统下的换行代表 2 个字符大小。
file.write(str)将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

OS库

Python 的 os 模块提供了非常丰富的方法用来处理文件和目录。

方法说明
os.access(path, mode)检验权限模式
os.chdir(path)改变当前工作目录
os.chflags(path, flags)设置路径的标记为数字标记
os.chmod(path, mode)更改权限
os.chown(path, uid, gid)更改文件所有者
os.chroot(path)改变当前进程的根目录
os.close(fd)关闭文件描述符 fd
os.closerange(fd_low, fd_high)关闭所有文件描述符,从 fd_low(包含)到 fd_high(不包含),错误会忽略
os.dup(fd)复制文件描述符 fd
os.dup2(fd, fd2)将一个文件描述符 fd 复制到另一个 fd2
os.fchdir(fd)通过文件描述符改变当前工作目录
os.fchmod(fd, mode)改变一个文件的访问权限,该文件由参数 fd 指定,参数 mode 是Unix 下的文件访问权限
os.fchown(fd, uid, gid)修改一个文件的所有权,这个函数修改一个文件的用户 ID 和用户组 ID,该文件由文件描述符 fd 指定
os.fdatasync(fd)强制将文件写入磁盘,该文件由文件描述符 fd 指定,但是不强制更新文件的状态信息
os.fdopen(fd[, mode[, bufsize]])通过文件描述符 fd 创建一个文件对象,并返回这个文件对象
os.fpathconf(fd, name)返回一个打开的文件的系统配置信息。name 为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)
os.fstat(fd)返回文件描述符 fd 的状态,像 stat()
os.fstatvfs(fd)返回包含文件描述符 fd 的文件的文件系统的信息,Python 3.3 相等于 statvfs()
os.fsync(fd)强制将文件描述符为 fd的文件写入硬盘
os.ftruncate(fd, length)裁剪文件描述符 fd 对应的文件,所以它最大不能超过文件大小
os.getcwd()返回当前工作目录
os.getcwdb()返回一个当前工作目录的 Unicode 对象
os.isatty(fd)如果文件描述符 fd 是打开的,同时与 tty(-like) 设备相连,则返回 true,否则 False
os.lchflags(path, flags)设置路径的标记为数字标记,类似 chflags(),但是没有软链接
os.lchmod(path, mode)修改连接文件权限
os.lchown(path, uid, gid)更改文件所有者,类似 chown,但是不追踪链接
os.link(src, dst)创建硬链接,名为参数 dst,指向参数 src
os.listdir(path)返回 path 指定的文件夹包含的文件或文件夹的名字的列表
os.lseek(fd, pos, how)设置文件描述符 fd 当前位置为 poshow 方式修改: SEEK_SET 或者 0 设置从文件开始的计算的 posSEEK_CUR 或者 1 则从当前位置计算;os.SEEK_END 或者 2 则从文件尾部开始。在 Unix,Windows 中有效
os.lstat(path)stat(),但是没有软链接
os.major(device)从原始的设备号中提取设备 major 号码 (使用 stat 中的 st_dev 或者 st_rdev field)
os.makedev(major, minor)majorminor 设备号组成一个原始设备号
os.makedirs(path[, mode])递归文件夹创建函数。像 mkdir(),但创建的所有 intermediate-level 文件夹需要包含子文件夹
os.minor(device)从原始的设备号中提取设备 minor 号码(使用 stat 中的 st_dev 或者 st_rdev field
os.mkdir(path[, mode])以数字 mode 的 mode 创建一个名为 path 的文件夹。默认的 mode 是 0777(八进制)
os.mkfifo(path[, mode])创建命名管道,mode 为数字,默认为 0666(八进制)
os.mknod(filename[, mode=0600, device])创建一个名为 filename 文件系统节点(文件,设备特别文件或者命名管道)
os.open(file, flags[, mode])打开一个文件,并且设置需要的打开选项,mode 参数是可选的
os.openpty()打开一个新的伪终端对。返回 ptytty 的文件描述符
os.pathconf(path, name)返回相关文件的系统配置信息
os.pipe()创建一个管道。返回一对文件描述符 (r, w) 分别为读和写
os.popen(command[, mode[, bufsize]])从一个 command 打开一个管道
os.read(fd, n)从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd 对应文件已达到结尾,返回一个空字符串
os.readlink(path)返回软链接所指向的文件
os.remove(path)删除路径为 path 的文件。如果 path 是一个文件夹,将抛出 OSError;查看下面的 rmdir() 删除一个 directory
os.removedirs(path)递归删除目录
os.rename(src, dst)重命名文件或目录,从 srcdst
os.renames(old, new)递归地对目录进行更名,也可以对文件进行更名
os.rmdir(path)删除 path 指定的空目录,如果目录非空,则抛出一个 OSError 异常
os.stat(path)获取 path 指定的路径的信息,功能等同于 C API 中的 stat() 系统调用
os.stat_float_times([newvalue])决定 stat_result 是否以 float 对象显示时间戳
os.statvfs(path)获取指定路径的文件系统统计信息
os.symlink(src, dst)创建一个软链接
os.tcgetpgrp(fd)返回与终端 fd(一个由 os.open() 返回的打开的文件描述符)关联的进程组
os.tcsetpgrp(fd, pg)设置与终端 fd(一个由 os.open() 返回的打开的文件描述符)关联的进程组为 pg
os.ttyname(fd)返回一个字符串,它表示与文件描述符 fd 关联的终端设备。如果 fd 没有与终端设备关联,则引发一个异常
os.unlink(path)删除文件路径
os.utime(path, times)返回指定的 path 文件的访问和修改的时间
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])输出在文件夹中的文件名通过在树中游走,向上或者向下
os.write(fd, str)写入字符串到文件描述符 fd 中。返回实际写入的字符串长度
os.path 模块获取文件的属性信息
os.pardir()获取当前目录的父目录,以字符串形式显示目录名

例如:

import os  # 导入Python的os模块,该模块提供了与操作系统相关的功能print('Current file path:', os.getcwd())  # 打印当前文件路径的提示信息。print("\nAll files in the current path:")  # 打印显示所有当前路径中的文件的提示信息
print(os.listdir('.'))print("\nCreate the 'Helloworld' folder:")  # 打印创建文件夹’Helloworld’的提示信息。
os.mkdir('Helloworld')  # 使用os.mkdir()函数创建名为’Helloworld’的文件夹
print(os.listdir('.'))print("\nRename 'Helloworld' to 'HelloLintCode':")  # 打印重命名文件夹’Helloworld’为’HelloLintCode’的提示信息。
os.rename('Helloworld', 'HelloLintCode')  # 使用os.rename()函数将’Helloworld’文件夹重命名为’HelloLintCode’
print(os.listdir('.'))  # 再次列出当前工作目录中的所有文件和文件夹,包括已经重命名的’HelloLintCode’文件夹。print("\nRemove the 'HelloLintCode' folder:")  # 打印删除文件夹’HelloLintCode’的提示信息。
os.rmdir('HelloLintCode')  # 使用os.rmdir()函数删除名为’HelloLintCode’的文件夹。
print(os.listdir('.'))print("\nSwitch to the'/' directory, new current file path:")  # 打印切换到根目录’/'的提示信息。
os.chdir('/')  # 使用os.chdir()函数将当前工作目录更改为根目录’/'。
print(os.getcwd())  # 再次打印当前工作目录,确认已经切换到根目录。

os.path 模块**

os.path 模块主要用于获取文件的属性。

方法说明
os.path.abspath(path)返回绝对路径
os.path.basename(path)返回文件名
os.path.commonprefix(list)返回 list(多个路径)中,所有 path 共有的最长的路径
os.path.dirname(path)返回文件路径
os.path.exists(path)路径存在则返回 True,路径损坏返回 False
os.path.lexists路径存在则返回 True,路径损坏也返回 True
os.path.expanduser(path)path 中包含的 "~" 和 "~user" 转换成用户目录
os.path.expandvars(path)根据环境变量的值替换 path 中包含的 "name" 和 "{name}"
os.path.getatime(path)返回最近访问时间(浮点型秒数)
os.path.getmtime(path)返回最近文件修改时间
os.path.getctime(path)返回文件 path 创建时间
os.path.getsize(path)返回文件大小,如果文件不存在就返回错误
os.path.isabs(path)判断是否为绝对路径
os.path.isfile(path)判断路径是否为文件
os.path.isdir(path)判断路径是否为目录
os.path.islink(path)判断路径是否为链接
os.path.ismount(path)判断路径是否为挂载点
os.path.join(path1[, path2[, ...]])把目录和文件名合成一个路径
os.path.normcase(path)转换 path 的大小写和斜杠
os.path.normpath(path)规范 path 字符串形式
os.path.realpath(path)返回 path 的真实路径
os.path.relpath(path[, start])start 开始计算相对路径
os.path.samefile(path1, path2)判断目录或文件是否相同
os.path.sameopenfile(fp1, fp2)判断 fp1fp2 是否指向同一文件
os.path.samestat(stat1, stat2)判断 stat tuple stat1stat2 是否指向同一个文件
os.path.split(path)把路径分割成 dirnamebasename,返回一个元组
os.path.splitdrive(path)一般用在 Windows 下,返回驱动器名和路径组成的元组
os.path.splitext(path)分割路径中的文件名与拓展名
os.path.splitunc(path)把路径分割为加载点与文件
os.path.walk(path, visit, arg)遍历 path,进入每个目录都调用 visit 函数,visit 函数必须有 3 个参数(arg, dirname, names),dirname 表示当前目录的目录名,names 代表当前目录下的所有文件名,args 则为 walk 的第三个参数
os.path.supports_unicode_filenames设置是否支持 Unicode 路径名
Python的`os`库是Python标准库中的一部分,提供了许多与操作系统交互的功能。这个库的名字来源于"Operating System"(操作系统),
它使得Python能够跨平台地与操作系统进行交互,执行文件和目录操作,管理进程,处理文件路径等。`os`库中的一些常用函数包括:- `os.getcwd()`: 获取当前工作目录。
- `os.chdir(path)`: 改变当前工作目录。
- `os.listdir(path)`: 列出指定目录中的文件和子目录。
- `os.mkdir(path)`: 创建一个新目录。
- `os.makedirs(path)`: 递归地创建目录。
- `os.remove(path)`: 删除文件。
- `os.rmdir(path)`: 删除目录。
- `os.rename(src, dst)`: 重命名文件或目录。
- `os.path.join(path1, path2, ...)`: 连接路径名组件。除了上述方法,`os`库还提供了许多其他方法,用于执行更广泛的操作系统级别的任务。这个库对于编写需要与文件系统进行交互的Python程序非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774385.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java | 自由落体与反弹距离计算

大家可以关注一下专栏,方便大家需要的时候直接查找,专栏将持续更新~ 题目描述 编写一个Java程序,计算一个球从100米高度自由落下,每次落地后反弹回原高度的一半的距离。求这个球在第10次落地时,总共经过的距离和第1…

探究QUIC协议:基于UDP的可靠传输之路

为什么需要基于 UDP 实现可靠传输 主要是 TCP 协议四个方面的缺陷: 升级 TCP 的工作很困难;TCP 建立连接的延迟;TCP 存在队头阻塞问题;网络迁移需要重新建立 TCP 连接; 因此,基于UDP实现可靠传输并不是重…

【python】(13)理解Python中的处理时间的模块

系列文章回顾 【python】(01)初识装饰器Decorator 【python】(02)初识迭代器Iterator 【python】(03)初识生成器Generator 【python】(04)python中实现多任务并发和并行的区别 【python】(05)如何使用python中的logging模块记录日志信息 【python】(06)理解Python中的 lambda 、…

ReentrantLock 原理

(一)、非公平锁实现原理 1、加锁解锁流程 先从构造器开始看,默认为非公平锁实现 public ReentrantLock() {sync new NonfairSync(); } NonfairSync 继承自 AQS 没有竞争时 加锁流程 构造器构造,默认构造非公平锁(无竞争,第一个线程尝试…

2023自适应霍夫曼编码High-performance RDHEI with adaptive Huffman code

RRBE 本文仅供自我学习使用,切勿转载和搬运,如有侵权,联系立删~ 方法总框架 首先由内容所有者生成原始图像像素点的标签映射; 然后数据隐藏者采用自适应霍夫曼编码将多个信息插入加密图像像素点;接收端进行数据提取和图像恢复。在数据提取之前,必须对标记的加密图像进行…

DC-7靶场

一.环境搭建 1.下载地址 靶机下载地址:https://download.vulnhub.com/dc/DC-7.zip 2.虚拟机配置 设置nat,打开靶机,遇到错误点重试和是 开启后如图所示即可 二.开始渗透 1.信息收集 首先找到靶机的ip地址 arp-scan -l 发现靶机的ip地址为192.168.…

影视接口支持资源站去插播,官解官替,切片

​​​​​uutb.centos.chat/jsonwjm.php/?url 公益提供,请友好调用

分布式ID生成方案总结

分布式场景下,需要保证每一个服务拿到的id是唯一的。本文讨论、分析、总结了一些常见的分布式ID生成方案 结论:技术上没有银弹,每种分布式id都有自己的使用场景。uuid适用于业务比较简单,对性能没有太高追求等。 目前主流是 基于数…

某手信息流如何跳V,达到精准数据回传?

在数字营销的新纪元中,快手磁力引擎凭借其卓越的推广能力,已经吸引了无数品牌的目光。而为了更有效地将快手上的流量转化为企业微信的用户,数灵通正逐渐崭露头角,成为品牌方的得力助手。今天,我们就来探讨一下&#xf…

Pytorch多机多卡分布式训练

多机多卡分布式: 多机基本上和单机多卡差不多: 第一台机器(主设备): torchrun --master_port 6666 --nproc_per_node8 --nnodes${nnodes} --node_rank0 --master_addr${master_addr} train_with_multi_machine_an…

【问题处理】蓝鲸监控-数据断点解决

本文来自腾讯蓝鲸智云社区用户:fadewalk 在问答社区看到有小伙伴在落地蓝鲸的过程中出现监控平台的grafana面板数据断点问题,往往出现这种问题,都比较的头疼。 如果将CMDB(配置管理数据库)比作运维的基石,…

嵌入式Linux:空洞文件

空洞文件(Sparse File)是一种在磁盘上并非完全分配存储空间的文件。它包含了一些逻辑上存在但物理上并未存储的数据。 空洞文件在多线程共同操作文件时具有极大的优势。当创建一个巨大的文件时,单个线程逐步构建文件会耗费大量时间。一种优化…

Soft Robotics:两栖环境下螃蟹仿生机器人的行走控制

传统水陆两栖机器人依靠轮胎或履带与表面的接触及摩擦产生推进力,这种对于表面接触的依赖性限制了现有水陆两栖机器人在低重力环境下(如水中)的机动性。利用生物自身的推进机制,人为激发生物运动行为,由活体生物与微机…

P1923 【深基9.例4】求第 k 小的数 Python 并未AC的一题

【深基9.例4】求第 k 小的数 题目描述 输入 n n n&#xff08; 1 ≤ n < 5000000 1 \le n < 5000000 1≤n<5000000 且 n n n 为奇数&#xff09;个数字 a i a_i ai​&#xff08; 1 ≤ a i < 10 9 1 \le a_i < {10}^9 1≤ai​<109&#xff09;&#xff…

电阻的妙用:限流、分压、滤波,助力电路设计!

电阻可以降低电压&#xff0c;这是通过电阻的分压来实现的。事实上&#xff0c;利用电阻来降低电压只是电阻的多种功能之一。电路中的电阻与其他元件&#xff08;电容、电感&#xff09;结合用于限流、滤波等。&#xff08;本文素材来源&#xff1a;https://www.icdhs.com/news…

AKShare 快速入门

AKShare 快速入门 查看数据 AKShare 快速入门 具体函数使用详情, 请查看 AKShare 文档 每个接口的示例代码 AKShare 数据接口一览 交易所期货数据 “get_cffex_daily”, # 中国金融期货交易所每日交易数据 “get_cffex_rank_table”, # 中国金融期货交易所前20会员持仓…

简明 Python 教程(第9章 面向对象编程)

本章开始介绍Python的面向对象编程&#xff0c;Python这种动态语言的面向对象和很多强类型语言如JAVA&#xff0c;C#&#xff0c;C等语法上区别还是比较大的&#xff0c;但总体思路基本还是相通的。面向对象编程是一种编程范式&#xff0c;它使用对象来表示现实世界中的实体&am…

C++ :STL中vector扩容机制

vector是STL提供的动态数组&#xff0c;它会在内部空间不够用时动态的调整自身的大小&#xff0c;调整过程中会有大量的数据拷贝&#xff0c;为了减少数据拷贝的次数vector会在调整空间的时候尽量多申请一些空间&#xff0c;这些预留出的空间可以很大程度上减少拷贝的发生。 在…

适合新手小白的wordpress详细安装教程

1、下载程序 到wordpress官方网站下载wordpress程序&#xff0c;官方下载地址&#xff1a;Download | WordPress.org China 简体中文。 下载最新版的wordpress程序 https://cn.wordpress.org/latest-zh_CN.zip 2、上传程序 上传程序前先确认主机是否符合安装的环境要求&…

文件压缩与解压命令

(1)tar 打包或解包 tar 将文件打包tar cvf xxxx.tar(打包好的名字) 需要打包的所有文件名 各参数的意义如下: c:创建包文件 f:指定目标为文件而不是设备; v:显示详细过程; t:显示包中的内容而不释放; x:释放包中的内容 z:GNU版本新加的,使得tar有压缩和解压的功能; 解…