os模块


1)     access()方法用于判断文件是否“存在”、“可读”、“可写”、“可执行”,如果是则返回 True ,否则返回 False

os.access(path, mode)

path :这是对于存在或任何访问进行测试的路径

mode : F_OK值是用于测试路径的存在,或者它可以是在包含或一种或多种R_OK,W_OK,X_OK测试权限。

os.F_OK: 值作为模式,测试来路径是否存在

os.R_OK: 值作为模式,测试来路径是否可读

os.W_OK 值作为模式,测试来路径是否可写

os.X_OK 值作为模式,测试来路径是否可执行

>>> import os

r = os.access('./requirement.txt', os.F_OK)

>>> print(r) 

 True

>>> r = os.access('./requirement.txt', os.R_OK)

>>> print(r)

True

>>> r = os.access('./requirement.txt', os.W_OK)

>>> print(r)

True

>>> r = os.access('./requirement.txt', os.X_OK)

>>> print(r)

False

2)     chdir()方法改变当前的工作目录到指定路径。它返回对象是None

os.chdir(path)

path -- 这是被用来改变到一个新的位置的完整路径目录

如果指定路径未找到它会抛出 FileNotFoundError 错误异常。

>>> os.chdir('./codes/')

>>> r = os.getcwd()

>>> print(r)

/home/book/codes

3)   getcwd()方法返回当前工作目录

4)   listdir()方法返回一个包含由路径给出的目录条目名称的列表。该列表在任意顺序。它不包括特殊项目“.”和“..”,即使它们存在在目录中。但是仅限于本层

>>> listdi = os.listdir('./') #获取当前路径下的所有文件和目录

>>> print(listdi)

['encryption1.py', 'exam', 'input.txt', 'encryption','databsetest.py', 'testbase64.py', 'bytestest.py', 'key.py', 'testarray.py']

>>> listdi = os.listdir('../')

#获得上一级,注意能查到以.开头的文件,但是仅限于本层

>>> print(listdi)

['.bash_history', '.config', '.bashrc', 'Templates','.presage', 'Pictures', 'codes', '.gnupg', '.bash_logout', '.dbus', '.java','.local', 'Public', 'Downloads', '.Xauthority', 'aliyun-python-sdk-kms','.mysql_history', 'sublime-text-imfix', '.xsession-errors.old', 'Desktop','.dmrc', '.xsession-errors', 'Music', '.cache', '.ICEauthority', 'Documents','learngit', '.sudo_as_admin_successful', '.sogouinput', 'requirement.txt','.PyCharm2017.3', 'projects', 'aliyun-python-sdk-afs', '.mozilla', 'Videos','.xinputrc', '.python_history', 'examples.desktop', '.gconf', '.profile']

 

5)   mkdir() 方法使用一个数字模式mode创建一个名为 path 的路径。 默认模式为0777(八进制)。在一些系统上,模式将被忽略。

>>> os.mkdir('异步')  #创建目录

>>> os.listdir('./')

['encryption1.py', 'exam', 'input.txt', 'encryption','databsetest.py', 'testbase64.py', 'bytestest.py', 'key.py', '异步', 'testarray.py']

>>> os.mkdir('异步.py') #创建目录不是文件

>>> os.listdir('./')

['异步.py', 'encryption1.py', 'exam','input.txt', 'encryption', 'databsetest.py', 'testbase64.py', 'bytestest.py','key.py', '异步', 'testarray.py']

6)     chmod() 方法改变路径的模式为数字模式。

模式(mode)可采取以下值中的一个或按位运算组合

stat.S_ISUID: 在执行时设置用户ID

stat.S_ISGID: 在执行时设置组ID

stat.S_ENFMT: 记录锁定执行

stat.S_ISVTX: 执行后保存文本镜像

stat.S_IREAD: 由所有者读取

stat.S_IWRITE: 由所有者写入

stat.S_IEXEC: 由所有者执行

stat.S_IRWXU: 由所有者读取、写入和执行

stat.S_IRUSR: 由所有者读取

stat.S_IWUSR: 由所有者写入

stat.S_IXUSR: 由所有者执行

stat.S_IRWXG: 由组写读、写和执行

stat.S_IRGRP: 由组读取

stat.S_IWGRP: 由组写入

stat.S_IXGRP: 由组执行

stat.S_IRWXO: 由其他人写读、写和执行

stat.S_IROTH: 由其他人读取

stat.S_IWOTH: 由其他人写入

stat.S_IXOTH: 由其他人执行

 

>>> import stat

>>> os.chmod('./mkfile.py',stat.S_IRWXU)

注意:如果文件有可执行权限则文件的头一句必须是下面一句话

#! /usr/bin/env python3

7)   open()方法根据标记(flags),并根据设置各种标志在指定模式下打开文件

os.open(file, flags[, mode]);

file -- 要打开的文件名

flags -- 以下常量是标志 flags 选项。可以用位或操作符相结合。但是其中有些是不是适用于所有平台。

 os.O_RDONLY: 只读打开

os.O_WRONLY: 只写打开

os.O_RDWR : 打开读写

os.O_NONBLOCK: 不阻塞打开

os.O_APPEND: 每个写入附加

os.O_CREAT: 如果不存在,创建文件

os.O_FSYNC : 同步写入

#!/usr/bin/python3

import os

# Open a file

fd = os.open( "foo.txt",os.O_RDWR|os.O_CREAT )

# Write one string

line="this is test"

# string needs to be converted byte object

b=str.encode(line)

os.write(fd, b)

# Close opened file

os.close( fd)

print ("Closed the file successfully!!")

8)   os.read(fd, n)

从文件描述符 fd 读取最多到 n 个字节。返回包含读取字节的字符串。如果 fd 引用已到达文件的末尾,则返回一个空字符串

注:此函数适用于低级别的I/O,以及必须由 os.open() 或 pipe() 返回适用于一个文件描述符。若要读取“文件对象”的返回值,这是由内置open()函数或任何通过 popen()或 fdopen(),或 sys.stdin,使用它的 read()或 readline()方法。

9)   remove()方法删除文件的路径。如果路径是一个目录,将引发 OSError 异常。

10) rmdir()方法命令删除目录路径。它只有在当该目录是空时工作,否则引发 OSError 异常。

11) walk()方法通过遍历树,无论是自上而下还是自下而上生成的目录树中的文件名

os.walk(top[, topdown=True[, onerror=None[,followlinks=False]]])

 

top --将要遍历的目录,得到3元组,即(dirpath, dirnames, filenames)

topdown -- 如果可选参数 topdown 的值是Ture或未指定,则目录从自上而下的扫描。 如果 topdown 设置为False,目录从自下而 上的扫描。

onerror -- 这可能会显示错误继续遍历文件,或引发异常中止遍历。

followlinks -- 这可访问目录指向符号链接,如果设置为true。

import os

import os

for root, dirs, files in os.walk("../codes",topdown=False): #深度遍历 自上而下

    for name in files:

       print(os.path.join(root, name))

    for name in dirs:

       print(os.path.join(root, name))

 

for root, dirs, files in os.walk("../codes",topdown=True): # 深度遍历 自下而上

    for name in files:

       print(os.path.join(root, name))

    for name in dirs:

       print(os.path.join(root, name))

12)abspath(),返回绝对路径

      os.path.abspath(path)

>>> import os

>>> os.path.abspath('./')

'/home/book'

>>> os.path.abspath('../')

'/home'

13split(path)  查看路径的文件夹部分和文件名部分

os.path.split(path):将路径分解为(文件夹,文件名)返回的是元组类型

 

>>> import os

>>> os.path.split('./foo.txt')

('.', 'foo.txt')

>>>os.path.split('/home/book/codes/foo.txt')

('/home/book/codes', 'foo.txt')

>>> os.path.split('/home/book/codes/')

('/home/book/codes', '')

>>> os.path.split('/home/book/codes')

('/home/book', 'codes')

os.path.join(path1,path2,...):path进行组合,若其中有绝对路径,则之前的path将被删除。

>>> os.path.join('/home/book/codes','foo.txt')
'/home/book/codes/foo.txt'

>>>os.path.join('/home/book/codes/','foo.txt')

'/home/book/codes/foo.txt'

>>>os.path.join('/home/book/codes/foo.txt', '/home/book/codes/doo.txt')

'/home/book/codes/doo.txt'   #若其中有绝对路径,则之前的path将被删除




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值