Python学习OS 模块来处理文件和目录

本文介绍了Python的OS模块,包括使用os.access()检查文件访问权限,os.chdir()改变目录,os.walk()遍历目录树,os.close()和closerange()关闭文件描述符,os.dup()复制文件描述符,os.fdopen()创建文件对象,以及os.remove()和removedirs()删除文件和目录的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、os.access() 方法使用当前的uid/gid尝试访问路径
access()方法语法格式如下: os.access(path, mode)

>>> import os,sys
#路径是否存在
>>> root = os.access("/Users/wangyue/Desktop/wangyue.txt", os.F_OK) 
>>> print (root)
True
#是否可读
>>> root = os.access("/Users/wangyue/Desktop/wangyue.txt", os.R_OK)
>>> print (root)
True
#是否可写入
>>> root = os.access("/Users/wangyue/Desktop/wangyue.txt", os.W_OK)
>>> print(root)
True
#是否可执行
>>> root = os.access("/Users/wangyue/Desktop/wangyue.txt", os.X_OK)
>>> print(root)
False
>>> 

2、os.chdir() 方法用于改变当前工作目录到指定的路径

>> import os,sys
>>> currentPath = os.getcwd()
>>> print(currentPath)
/Users/wangyue/Documents
>>> path = "/Users/wangyue/Desktop"
>>> os.chdir(path)
>>> currentPath = os.getcwd()
>>> print(currentPath)
/Users/wangyue/Desktop

3、os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下
walk()方法语法格式:os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

#top可以是指定路径 
>>> import os产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】
>>> for root, dirs, files in os.walk("/Users/wangyue/Desktop/UI", topdown=False):
    for name in files:
         print(os.path.join(root, name))
    for name in dirs:
                 print(os.path.join(root, name))


/Users/wangyue/Desktop/UI/云跑步首页切图/减震模式/减震模式_公路图标@2x.png
/Users/wangyue/Desktop/UI/云跑步首页切图/减震模式/减震模式_公路图标@3x.png
/Users/wangyue/Desktop/UI/云跑步首页切图/减震模式/减震模式_塑胶跑道图标@2x.png
/Users/wangyue/Desktop/UI/云跑步首页切图/减震模式/减震模式_塑胶跑道图标@3x.png
#有点多只截取一部分

4、os.close() 方法用于关闭指定的文件描述符 fd(文件描述符)

>>> import os, sys
>>> fd = os.open("/Users/wangyue/Desktop/wang.txt", os.O_RDWR|os.O_CREAT)
>>> os.write(fd,u"wwwwwwww".encode())  #这里需要传入二进制流,不是字符串
>>> os.close(fd)  #关闭文件

5、os.closerange() 方法用于关闭所有文件描述符 fd,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略

>>> import os, sys
>>> fd = os.open("/Users/wangyue/Desktop/wang.txt", os.O_RDWR|os.O_CREAT)
>>> os.write(fd,u"wwwwwwww".encode())  #这里需要传入二进制流,不是字符串
>>> os.closerange(fd,fd)  #关闭文件

6、os.dup() 方法用于复制文件描述符 fd

>>> import os, sys
>>> fd = os.open("/Users/wangyue/Desktop/wang.txt", os.O_RDWR|os.O_CREAT)
>>> copy_fd = os.dup(fd)
>>> os.write(copy_fd, "wangyue".encode())
7
>>> os.closerange(fd,copy_fd)

7、os.fdopen() 方法用于通过文件描述符 fd 创建一个文件对象,并返回这个文件对象,fdopen()方法语法格式:os.fdopen(fd, [, mode[, bufsize]]);
bufsize – 可选参数,指定返回的文件对象是否带缓冲
bufsize=0,表示没有带缓冲
bufsize=1,表示该文件对象是行缓冲的
bufsize=正数,表示使用一个指定大小的缓冲冲,单位为byte

>>> import os, sys
>>> fd = os.open("/Users/wangyue/Desktop/wang.txt", os.O_RDWR|os.O_CREAT)
>>> file = os.fdopen(fd,"w+")
>>> file.write("wwwwwwwwwwwwww\nwwwwwwwwwwwwwww\n")
31
>>> os.lseek(fd,0,0)   #将文件指针指向文件开头的位置
0
>>> os.read(fd,100)   
'wwwwwwwwwwwwww\nwwwwwwwwwwwwwww\n'
>>> os.close(fd)

8、os.remove() 方法用于删除指定路径的文件

>>> import os,sys
#path文件夹的内容
>>> for rootPath,dirs,files in os.walk("/Users/wangyue/Desktop/Path", topdown = False):
    for name in files:
        print(os.path.join(rootPath,name))


/Users/wangyue/Desktop/Path/wang.txt
/Users/wangyue/Desktop/Path/wangyue.txt
#删除指定文件夹
>>> os.remove("/Users/wangyue/Desktop/Path/wang.txt")
>>> for rootPath,dirs,files in os.walk("/Users/wangyue/Desktop/Path", topdown = False):
    for name in files:
        print(os.path.join(rootPath,name))
#删除后文件夹还剩余的文件
/Users/wangyue/Desktop/Path/wangyue.txt
>>> 

9、os.removedirs() 方法用于递归删除目录

Use quit() or Ctrl-D (i.e. EOF) to exit
#在payh里面新建的空文件夹,但是遍历的时候,显示不出来,我删除后路径下的子文件夹的确删除了,我也不清楚为什么会这样
>>> import os,sys
>>> for root,dirs,files in os.walk("/Users/wangyue/Desktop/Path", topdown = False):
    for name in files:
        print(os.path.join(root,name))


/Users/wangyue/Desktop/Path/.DS_Store
>>> os.removedirs("/Users/wangyue/Desktop/Path/Child")
>>> for root,dirs,files in os.walk("/Users/wangyue/Desktop/Path", topdown = False):
    for name in files:
        print(os.path.join(root,name))


/Users/wangyue/Desktop/Path/.DS_Store
#的确已删除
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值