# 操作目录和文件 操作系统提供的命令,如cp, ls,rm等,只是简单地调用了操作系统提供的接口函数,Python内置的`os`模块也可以直接调用操作系统提供的接口函数。 ```python import os os.name # 'posix' # 'nt' ``` 如果是`posix`,说明系统是`Linux`、`Unix`或`Mac OS X`,如果是`nt`,就是`Windows`系统。要获取详细的系统信息,可以调用`uname()`函数。注意`uname()`函数在Windows上不提供,也就是说,`os`模块的某些函数是跟操作系统相关的。 ## 环境变量 在操作系统中定义的环境变量,全部保存在`os.environ`这个变量中,可以直接查看。 ```python os.environ ``` 要获取某个环境变量的值,可以调用`os.environ.get('key')`。 ```python os.environ.get('PATH') ``` # os模块方法 ```python os.name #导入的依赖特定操作系统的模块的名称。以下名称目前已注册: 'posix', 'nt', 'java'. os.getcwd() # 返回当前工作目录 os.chdir(str) # 在解释器对话框内改变当前工作目录 os.mkdir(path, mode=511, dir_fd=None) #创建一个名为 path 的目录,应用以数字表示的权限模式 mode。如果目录已存在,则抛出 FileExistsError 异常。 os.makedirs(str) # 递归目录创建函数。 os.remove(path, dir_fd=None) #移除文件 path。 如果 path 是目录,则会引发 IsADirectoryError。 请使用 rmdir() 来删除目录。 如果文件不存在,则会引发 FileNotFoundError。 os.rmdir(path, dir_fd=None) #移除目录 path。如果目录不存在或不为空,则会分别抛出 FileNotFoundError 或 OSError 异常。要删除整个目录树,可以使用 shutil.rmtree()。 os.listdir(path) #path: str #输入path对象必须是一个目录,不能是一个文件,返回path对象目录下的文件名字符串列表,列表中每个元素都是文件完整名称,而不是绝对路径。 os.getenv(key, default=None) #如果存在,返回环境变量 key 的值,否则返回 default。 key , default 和返回值均为 str 字符串类型。 ``` # os.path模块方法 ```python os.path.join(path, *path) # path: str # 路径拼接操作,返回拼接后完整的路径str对象 os.path.abspath(path) # 接受一个路径path,实际上是一个str对象,返回path路径的绝对路径,实际上也是一个str对象 os.path.isabs(path) # path: str # 接受一个path,判断其是否为绝对路径,如果是返回True,否则返回False os.pathrelpath(path, start) # path: str # start: str #path相对于start的相对路径。返回的其实是从start到path的相对路径。 os.path.basename(path) # path: str # 返回path下的文件完整名称 os.path.basename("D:\\Projects\\darknet\\darknet.exe") 'darknet.exe' os.path.dirname(path) # path: str #返回path对象的目录的绝对路径 os.path.dirname("D:\\Projects\\darknet\\darknet.exe") 'D:\\Projects\\darknet' os.path.split(path) # path: str #返回一个二元素元组,第一个元素为os.path.dirname(path), 第二个元素为os.path.basename(path) os.path.split("D:\\Projects\\darknet\\darknet.exe") ('D:\\Projects\\darknet', 'darknet.exe') os.path.sep '\\' (Windows) '/' (Linux) os.path.getsize(filename) #filename: str #查看filename对象的字节数 os.path.exists(path) #path: str #如果path对象所指的文件或者目录存在,则返回True,否则返回False os.path.isfile(path) #path: str #如果path对象存在并且是一个文件,则返回True,否则返回False os.path.isdir(path) #path: str #如果path对象存在并且是一个目录,则返回True,否则返回False os.path.islink(path) # 如果 path 指向的现有目录条目是一个符号链接,则返回 True os.path.splitext(path) # path: str #将path对象拆分成一个文件和一个扩展名,返回元组 os.path.splitext("D:\\Projects\\darknet\\darknet.exe") ('D:\\Projects\\darknet\\darknet', '.exe') ```