您的位置:首页 > 编程语言 > Python开发

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

2017-12-20 20:14 573 查看
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[, onerror=None[, followlinks=False]]])

#top可以是指定路径
>>> import os产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】
>>> for root,
bcad
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
#的确已删除
>>>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: