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程序非常有用。

  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值