一. 简介
前面文章简单学习了Python3中 OS模块中的文件/目录的部分函数。
本文继续来学习 OS模块中文件、目录的操作方法。
二. Python3 OS模块中的文件/目录方法
1. os.lseek() 方法、os.lstat() 方法
os.lseek() 方法用于在打开的文件中移动文件指针的位置。在Unix,Windows中有效。
lseek()方法语法格式如下:
os.lseek(fd, pos, whence)
fd:文件描述符,表示已经打开的文件。
pos:新的文件指针位置偏移量。
whence:指定 pos 参数的参考点,可以是以下常量之一:
os.SEEK_SET(0):从文件开头开始计算偏移量。
os.SEEK_CUR(1):从当前文件指针位置开始计算偏移量。
os.SEEK_END(2):从文件末尾开始计算偏移量。
示例如下:
#!/usr/bin/env python3
import os, sys
fd = os.open("file.txt", os.O_RDWR|os.O_CREAT)
os.write(fd, "zhangwanyi is a wonderful person.".encode())
#使用fsync()函数强制将缓冲区中的数据写入磁盘
#从文件开始位置读取字符串
os.lseek(fd, 0, 0)
msg = os.read(fd, 80)
print("read msg: ", msg)
os.close(fd)
运行后结果如下:
read msg: b'zhangwanyi is a wonderful person.'
os.lstat() 方法用于类似 stat() 返回文件的信息,但是没有符号链接。
lstat()方法语法格式如下:
os.lstat(path)
path -- 要返回信息的文件。
示例如下:
#!/usr/bin/env python3
import os, sys
path = "file.txt"
fd = os.open(path, os.O_RDWR|os.O_CREAT)
os.close(fd)
info = os.lstat(path)
print("文件信息:", info)
print("文件 uid: %d" % info.st_uid)
print("文件 gid: %d" % info.st_gid)
运行后结果如下:
2. os.major() 方法、os.makedev() 方法
os.major() 方法用于从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。
major()方法语法格式如下:
os.major(device)
参数
device -- 原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。
返回值
返回设备major号码。
示例如下:
#!/usr/bin/env python3
import os, sys
path = "file.txt"
info = os.lstat(path)
major_number = os.major(info.st_dev)
minor_number = os.minor(info.st_dev)
print("Major number:", major_number)
print("Minor number:", minor_number)
运行结果如下:
Major number: 8
Minor number: 3
os.makedev() 方法用于以major和minor设备号组成一个原始设备号。
makedev()方法语法格式如下:
os.makedev(major, minor)
示例如下:
#!/usr/bin/env python3
import os, sys
path = "file.txt"
info = os.lstat(path)
#获取 major和 minor设备号
major_number = os.major(info.st_dev)
minor_number = os.minor(info.st_dev)
print("Major number:", major_number)
print("Minor number:", minor_number)
#以major和minor设备号组合成原始设备号
dev_number = os.makedev(major_number, minor_number)
print("Device number: ", dev_number)
运行后结果如下:
Major number: 8
Minor number: 3
Device number: 2051