# 操作目录和文件
操作系统提供的命令,如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')
```