我最开始是在ai studio平台的一堂python学习营里接触os库函数的操作。如下所示
在这里插入代码片
#导入OS模块
import os
#待搜索的目录路径
path = "Day1-homework"
#待搜索的名称
filename = "2020"
#定义保存结果的数组
result = []
def findfiles():
#在这里写下您的查找文件代码吧!
for root, dirs, files in os.walk(path):
for f in files:
res = os.path.join(root,f)
if filename in res:
result.append(res)
for key,vel in enumerate(result):
print([key+1,vel])
if __name__ == '__main__':
findfiles()
执行情况
[1, ‘Day1-homework/18/182020.doc’]
[2, ‘Day1-homework/4/22/04:22:2020.txt’]
[3, ‘Day1-homework/26/26/new2020.txt’]
该段代码的实现就是遍历指定文件夹,然后打印包含规定字符串’2020’的文件名
一年多没有看代码了,虽然短短几行代码跑起来正常运营还是有点小激动。想起我大学的时候,学习C语言跑通了一个“hello world”我就以为自己是编程入门高手了。哈哈,不自黑了。编程需要脚踏实地。那我们接下来,仔细聊聊python 的os库吧。
os 模块代表了程序所在的操作系统,主要用于获取程序运行所在操作系统的相关信息。开发者需要详细研究可以参考以下url地址
os模块library
os.access(path, mode) 检验权限模式
参数
path – 要用来检测是否有访问权限的路径。
mode – mode为F_OK,测试存在的路径,或者它可以是包含R_OK, W_OK和X_OK或者R_OK, W_OK和X_OK其中之一或者更多。
os.F_OK: 作为access()的mode参数,测试path是否存在。
os.R_OK: 包含在access()的mode参数中 , 测试path是否可读。
os.W_OK 包含在access()的mode参数中 , 测试path是否可写。
os.X_OK 包含在access()的mode参数中 ,测试path是否可执行。
在这里插入代码片
ret = os.access("./foo.txt", os.F_OK)
print("F_OK - 返回值 %s"% ret)
ret = os.access("./foo.txt", os.W_OK)
print("W_OK - 返回值 %s"% ret)
ret = os.access("./foo.txt", os.R_OK)
print("R_OK - 返回值 %s"% ret)
ret = os.access("./foo.txt", os.X_OK)
print("X_OK - 返回值 %s"% ret)
执行情况
F_OK - 返回值 True
W_OK - 返回值 True
R_OK - 返回值 True
X_OK - 返回值 False
os.chdir(path)
参数
path – 要切换到的新路径
返回值
如果允许访问返回 True , 否则返回False。
os.chmod(path, mode)
参数
path – 文件名路径或目录路径。
flags – 可用以下选项按位或操作生成, 目录的读权限表示可以获取目录里文件名列表, ,执行权限表示可以把工作目录切换到此目录 ,删除添加目录里的文件必须同时有写和执行权限 ,文件权限以用户id->组id->其它顺序检验,最先匹配的允许或禁止权限被应用。
stat.S_IXOTH: 其他用户有执行权0o001
stat.S_IWOTH: 其他用户有写权限0o002
stat.S_IROTH: 其他用户有读权限0o004
stat.S_IRWXO: 其他用户有全部权限(权限掩码)0o007
stat.S_IXGRP: 组用户有执行权限0o010
stat.S_IWGRP: 组用户有写权限0o020
stat.S_IRGRP: 组用户有读权限0o040
stat.S_IRWXG: 组用户有全部权限(权限掩码)0o070
stat.S_IXUSR: 拥有者具有执行权限0o100
stat.S_IWUSR: 拥有者具有写权限0o200
stat.S_IRUSR: 拥有者具有读权限0o400
stat.S_IRWXU: 拥有者有全部权限(权限掩码)0o700
stat.S_ISVTX: 目录里文件目录只有拥有者才可删除更改0o1000
stat.S_ISGID: 执行此文件其进程有效组为文件所在组0o2000
stat.S_ISUID: 执行此文件其进程有效用户为文件所有者0o4000
stat.S_IREAD: windows下设为只读
stat.S_IWRITE: windows下取消只读
返回值
无
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: 不追踪软链接
mode – 类似 chmod()。
返回值
返回新打开文件的描述符
os.write(fd, bytes)
参数
fd – 文件描述符。
bytes – 写入的字符串。
返回值
该方法返回写入的实际位数
在这里插入代码片
# 打开文件
import os, sys
fd = os.open( "foo.txt", os.O_RDWR|os.O_CREAT )
# 写入字符串
os.write(fd,bytes("this is ok",encoding="UTF-8"))
# 关闭文件
os.close( fd )
print("关闭文件成功!!")
注意:python2.X wirte函数是str字符串,python3.X函数是bytes需要编码处理下
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
参数
top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
onerror – 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
followlinks – 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
返回值
返回生成器
代码样例看本文第一段执行代码
关于更多函数
可以参考以下地址
https://www.runoob.com/python/os-file-methods.html
http://kuanghy.github.io/python-os/