网站备案 价格,手机行业网站,个人备案 什么网站,随机关键词生成器一. 简介
前面文章简单学习了Python3中 OS模块中的文件/目录的部分函数。
本文继续来学习 OS模块中文件、目录的操作方法#xff1a;os.fdopen()方法、os.fpathconf() 方法、os.fstat() 方法、os.fstatvfs() 方法。 二. Python3 OS模块中的文件/目录方法说明三
1. os.fdop…一. 简介
前面文章简单学习了Python3中 OS模块中的文件/目录的部分函数。
本文继续来学习 OS模块中文件、目录的操作方法os.fdopen()方法、os.fpathconf() 方法、os.fstat() 方法、os.fstatvfs() 方法。 二. Python3 OS模块中的文件/目录方法说明三
1. os.fdopen()方法、os.fpathconf() 方法
os.fdopen() 方法用于通过文件描述符 fd 创建一个文件对象并返回这个文件对象。
该方法是内嵌函数 open的别名可以接收一样的参数唯一的区别是 fdopen() 的第一个参数必须是整型。
fdopen()方法语法格式如下
os.fdopen(fd, mode, bufsize);
参数fd -- 打开的文件的描述符在Unix下描述符是一个小整数。mode -- 可选和 Python 内建的 open 函数一样mode参数可以指定『r,w,a,r,w,a,b』等,这些参数和 C语言中的stdio.h中fopen函数中指定的mode参数类似。bufsize -- 可选指定返回的文件对象是否带缓冲bufsize0表示没有带缓冲
bufsize1表示该文件对象是行缓冲的
bufsize正数表示使用一个指定大小的缓冲单位为byte但是这个大小不是精确的
bufsize负数表示使用一个系统默认大小的缓冲。
对于tty字元设备一般是行缓冲而对于其他文件则一般是全缓冲。返回值通过文件描述符返回的文件对象。
示例如下
#!/usr/bin/env python3
import os, sys#打开文件
fd os.open(file.txt, os.O_RDWR|os.O_CREAT)
#获取以上文件的对象
f os.fdopen(fd, w)
f.write(Python is a language.)
os.lseek(fd, 0 , 0)
msg os.read(fd, 60)
print(msg: , msg)
os.close(fd)运行后结果如下
msg: bPython is a language
os.fpathconf() 方法用于返回一个打开的文件的系统配置信息。Unix上可用。
fpathconf()方法语法格式如下
os.fpathconf(fd, name)
参数fd -- 打开的文件的描述符。name-- 要查询的配置参数名称常见配置参数PC_LINK_MAX一个目录中可能的最大硬链接数。PC_NAME_MAX文件名的最大长度不包括路径部分。PC_PATH_MAX路径名的最大长度包括所有路径组件。PC_PIPE_BUF管道缓冲区的最大大小在该大小内的写入操作是原子的。PC_CHOWN_RESTRICTED是否受限于更改文件所有者通常是 1 表示受限0 表示不受限。PC_NO_TRUNC是否在超出最大路径长度时截断路径名通常是 1 表示不截断0 表示截断。返回值返回一个打开的文件的系统配置信息。
示例如下
#!/usr/bin/env python3
import os, sys
#打开文件
fd os.open(file.txt, os.O_RDWR|os.O_CREAT)
print(%s % os.pathconf_names)#获取最大文件连接数
count os.fpathconf(fd, PC_LINK_MAX)
#获取文件名最大长度
name_max os.fpathconf(fd, PC_NAME_MAX)
print(文件最大连接数: %d % count)
print(文件名最大长度为%d % name_max)
os.close(fd)
运行后结果如下
{PC_ALLOC_SIZE_MIN: 18, PC_ASYNC_IO: 10, PC_CHOWN_RESTRICTED: 6, PC_FILESIZEBITS: 13, PC_LINK_MAX: 0, PC_MAX_CANON: 1, PC_MAX_INPUT: 2, PC_NAME_MAX: 3, PC_NO_TRUNC: 7, PC_PATH_MAX: 4, PC_PIPE_BUF: 5, PC_PRIO_IO: 11, PC_REC_INCR_XFER_SIZE: 14, PC_REC_MAX_XFER_SIZE: 15, PC_REC_MIN_XFER_SIZE: 16, PC_REC_XFER_ALIGN: 17, PC_SOCK_MAXBUF: 12, PC_SYMLINK_MAX: 19, PC_SYNC_IO: 9, PC_VDISABLE: 8}
文件最大连接数: 65000
文件名最大长度为2552. os.fstat() 方法、os.fstatvfs() 方法
os.fstat() 方法用于返回文件描述符 fd的状态类似 stat()。Unix上可用。
fstat()方法语法格式如下
os.fstat(fd)
fstat 方法返回的结构:st_dev: 设备信息st_ino: 文件的i-node值st_mode: 文件信息的掩码包含了文件的权限信息文件的类型信息(是普通文件还是管道文件或者是其他的文件类型)st_nlink: 硬连接数st_uid: 用户IDst_gid: 用户组 IDst_rdev: 设备 ID (如果指定文件)st_size: 文件大小以byte为单位st_blksize: 系统 I/O 块大小st_blocks: 文件的是由多少个 512 byte 的块构成的st_atime: 文件最近的访问时间st_mtime: 文件最近的修改时间st_ctime: 文件状态信息的修改时间不是文件内容的修改时间示例如下
#!/usr/bin/env python3import os, sys
#打开文件
fd os.open(file.txt, os.O_RDWR|os.O_CREAT)
#获取与文件描述符关联的文件状态信息
info os.fstat(fd)print(文件信息:, info)
#获取文件uid
print(文件uid: %d % info.st_uid)
#获取文件gid
print(文件gid: %d% info.st_gid)
os.close(fd)
运行后结果如下
文件信息 : os.stat_result(st_mode33188, st_ino655366, st_dev2051, st_nlink1, st_uid0, st_gid0, st_size20, st_atime1737464897, st_mtime1737464897, st_ctime1737464897)
文件 UID :0
文件 GID :0os.fstatvfs() 方法用于返回包含文件描述符 fd的文件的文件系统的信息Python 3.3 相等于 statvfs()。UnixWindows上可用。
fstatvfs()方法语法格式如下
os.fstatvfs(fd)
fstatvfs 方法返回的结构:f_bsize: 文件系统块大小f_frsize: 分栈大小f_blocks: 文件系统数据块总数f_bfree: 可用块数f_bavail:非超级用户可获取的块数f_files: 文件结点总数f_ffree: 可用文件结点数f_favail: 非超级用户的可用文件结点数f_fsid: 文件系统标识 IDf_flag: 挂载标记f_namemax: 最大文件长度示例如下 #!/usr/bin/env python3import os, sys
#打开文件
fd os.open(file.txt, os.O_RDWR|os.O_CREAT)
#获取与文件描述符关联的文件状态信息
info os.fstatvfs(fd)
print(文件信息, info)
#获取文件名最大长度
print(文件名最大长度%d % info.f_namemax)
#获取可用块数
print(可用块数%d % info.f_bfree)
os.close(fd)
运行后结果如下
文件信息 os.statvfs_result(f_bsize4096, f_frsize4096, f_blocks25526518, f_bfree20261880, f_bavail18953669, f_files6520832, f_ffree6116642, f_favail6116642, f_flag4096, f_namemax255)
文件名最大长度255
可用块数20261880下面继续学习 OS模块中文件、目录的其他操作方法。