今天学习了一下Python的os模块,主要是针对文件夹和文件路径的一系列操作。
与Python内置函数相比这里这里的函数功能更多样化,功能也更强大。但是学习过程中我发现很多函数都是只适用于unix系统,可能因为它是开源系统,涉及权限的api都是开放的缘故吧。但也正是如此,当我们再Windows上学习Python时,本来这个板块就难以理解,还具有不可操作性。学起来感觉很受打击。
所以这里把Windows上能用,且适用的函数记录下来,以便于以后复习:
1,os.lseek(fd,pos,how) 方法用于设置文件描述符 fd 当前位置为 pos, how 方式修改。(与内置函数类似但是多了一个文件描述符,pos:0代表开头,1代表当前,2代表结尾,how用一个int型表示方式。例10表示从pos往后数10个字节的位置。)
2.os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' 即使它在文件夹中。(使用方法os.listdir(path)在Linux中dir或者ls命令也是相同的效果)
3.os.lstat() 方法用于类似 stat() 返回文件的信息,但是没有符号链接。在某些平台上,这是fstat的别名,例如 Windows。
4,os.fstat() 方法用于返回文件描述符fd的状态,类似 stat()。
Unix,Windows上可用。
fstat 方法返回的结构:
st_dev: 设备信息
st_ino: 文件的i-node值
st_mode: 文件信息的掩码,包含了文件的权限信息,文件的类型信息(是普通文件还是管道文件,或者是其他的文件类型)
st_nlink: 硬连接数
st_uid: 用户ID
st_gid: 用户组 ID
st_rdev: 设备 ID (如果指定文件)
st_size: 文件大小,以byte为单位
st_blksize: 系统 I/O 块大小
st_blocks: 文件的是由多少个 512 byte 的块构成的
st_atime: 文件最近的访问时间
st_mtime: 文件最近的修改时间
st_ctime: 文件状态信息的修改时间(不是文件内容的修改时间)
(以上两个的使用方法相同,os.fstat(fd) ,fd表示文件描述符 且返回内型也相同都是文件信息file=os.fstat(fd) 然后将其打印出来print(file.st_uid))
5,
os.mkdir() 方法用于以数字权限模式创建目录。默认的模式为 0777 (八进制)。
语法
mkdir()方法语法格式如下:
os.mkdir(path[, mode])
参数
path -- 要创建的目录
mode -- 要为目录设置的权限数字模式
(mkdir就是linux中建立文件夹的命令)
6,os.getcwd() 方法用于返回当前工作目录。
7,os.getcwdu() 方法用于返回一个当前工作目录的Unicode对象。
8,os.fsync() 方法强制将文件描述符为fd的文件写入硬盘(个人觉得这是一个很好的函数就相当与保存键Ctrl +s。使用方法为os.fsync())
9,os.chdir() 方法用于改变当前工作目录到指定的路径。(os.chdir(path) 将当前程序的文件直接换为path,这样就省去了要大量使用的绝对路径的必要。)
10,os.fchdir() 方法通过文件描述符改变当前工作目录。(os.fchdir(fd)这个函数与上面的函数主要区别是通过文件描述符改变。主要是当打开了多个文件时可能有会用到)
11,
os.open() 方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777。
语法
open()方法语法格式如下:
os.open(file, flags[, mode]);
参数
file -- 要打开的文件
flags -- 该参数可以是以下选项,多个使用 "|" 隔开:
- os.O_RDONLY: 以只读的方式打开
- os.O_WRONLY: 以只写的方式打开
- os.O_RDWR : 以读写的方式打开
- os.O_NONBLOCK: 打开时不阻塞
- os.O_APPEND: 以追加的方式打开
- os.O_CREAT: 创建并打开一个新文件
- os.O_TRUNC: 打开一个文件并截断它的长度为零(必须有写权限)
- os.O_EXCL: 如果指定的文件存在,返回错误
- os.O_SHLOCK: 自动获取共享锁
- os.O_EXLOCK: 自动获取独立锁
- os.O_DIRECT: 消除或减少缓存效果
- os.O_FSYNC : 同步写入
- os.O_NOFOLLOW: 不追踪软链接
12,os.read() 方法用于从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。(os.read(fd,n)
13,os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。(os.remove(path))
14,os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。 os.rename(origalname,newname)
15,
os.rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError
16,
os.write() 方法用于写入字符串到文件描述符 fd 中. 返回实际写入的字符串长度。
在Unix中有效。(本来以为是很有用的但是只能在unix中有效,但是os.write(fd,b'str'))及输入二进制的时候不会报错,但是实际上是不能输出的