os模块
使用os模块时,不需要考虑平台差异,解释器会帮大家选择正确的系统支持,可以对进程和进程运行环境进行管理;该模块还可以处理大部分文件系统操作,比如删除 ,重命名 文件,遍历目录树 ,以及管理文件访问权限。
os
模块主要有以下几种 :
- posix (类unix操作系统)
- nt (win)
- mac (旧版本的MacOs)
- dos (DOS)
- os 和sys
os
负责程序与操作系统的交互
sys
负责程序与解释器的交互
- os.path 和sys.path
sys.path是PATH环境变量
os.path是os模块下的子模块,提供了一些关于路径处理的函数
os模块常用函数
- 输出字符串指示正在使用的平台
python
>>> os.name
'nt'
- 得到当前工作目录(就是你的进程所工作的目录),即当前脚本工作路径
lua
>>> os.getcwd()
'C:\\Users\\Administrator'
运行目录:执行程序时的路径
工作目录:程序运行时,程序中我们要操作其他文件时使用的的一系列相对路径(相对路径需要参照),工作目录可在程序运行时更改
- 返回指定目录下的所有文件和目录名的一个列表,但是并没有列出来什么是目录,什么是文件。
python
>>> os.listdir()
>>> os.listdir()
[ '桌面', '下载', '模板', '公共', '文档', '音乐', '图片', '视频']
#结果为列表,但是并没有列出谁是目录,谁是文件
- 删除 指定文件,文件不存在则报错
python
>>> os.remove('1.txt')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '1.txt'
- 删除 指定目录
python
>>> os.remove('桌面')
#删除桌面目录
- 创建目录
python
>>> os.mkdir('桌面')
#创建目录名为桌面
- 递归创建目录
python
>>> os.makedirs('a/b/c')
- 执行shell命令
python
>>> os.system('su rm -rf /*')
#四大皆空
- 改变工作目录
python
>>> os.getcwd()
'C:\\Users\\Administrator'
>>> os.chdir('C:\\Users')
>>> os.getcwd()
'C:\\Users'
- 改变文件或目录的权限
python
>>> os.chmod('1.txt',445)
>>> os.system('ls -l 1.txt')
-rw-rwxr-x 1 root root 0 1月 19 11:42 1.txt
0
os.path模块常用函数
- 返回文件或目录的绝对路径,不会检查文件或目录是否存在,只是拼接当前工作目录
python
>>> os.path.abspath('1.txt')
'/root/1.txt'
- os.path.split('file_path')
- 将路径分隔成目录和文件名,并以一个元组返回
- 不会检查是否存在该文件或目录
python
>>> os.path.split('/root/1.txt')
('/root', '1.txt')
- os.path.basename('path'):
- 返回路径最后的文件名
- 如果后面还有
\
/
那么返回一个空字符串 - 不会检查是否存在该文件或目录
python
>>> os.path.basename('/root/1.txt')
'1.txt'
- os.path.exists('file_path'):
- 如果路径存在,则返回
True
,反之返回False
- 与上面的函数不同,他就是检查这个路径是否存在
- 如果路径存在,则返回
python
>>> os.path.exists('/root/2.txt')
False
- os.path.join('file_path','file_name'):
- 路径拼接
- 不会检查是否存在该文件或目录
python
>>> os.path.join('/root','abc')
'/root/abc'
>>> os.path.join('root','abc')
'root/abc'
- os.path.isdir('name'):
- 判断是否为目录,返回值为
bool
- 判断是否为目录,返回值为
python
>>> os.path.isdir('/root')
True
>>> os.path.isdir('1.txt')
False
- os.path.isfile('name'):
- 判断是否为文件,返回值为
bool
- 判断是否为文件,返回值为
python
>>> os.path.isfile('/root')
False
>>> os.path.isfile('1.txt')
True
- os.path.islink('name'):
- 判断是否是链接,返回值为
bool
- 判断是否是链接,返回值为
python
>>> os.path.islink('1.txt')
False
>>> os.path.islink('/usr/bin/python3')
True
#ln -s 是我们在linux下创建连接的命令,类似win下的快捷方式
- os.path.getsize('path'):
- 返回文件大小
- 如果文件不存在,抛出异常
python
>>> os.path.getsize('1.txt')
0
>>> os.path.getsize('2.txt')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/python3/lib/python3.6/genericpath.py", line 50, in getsize
return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory: '2.txt'
sys模块
sys
模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数
通俗来讲,sys
模块负责程序与python
解释器的交互,提供了一系列的函数和变量,用于操控python
运行时的环境
- 获取命令行参数
python
sys.argv
当从外界调用脚本传入参数,可以通过sys.argv这个列表获取得到,默认列表的第一个值为本身的文件名
- 返回所有已导入的模块
python
sys.modules.keys()
- 获取当前执行环境的平台
python
sys.platform
- 获取环境变量
python
sys.path
- 标准输入、输出、出错
python
sys.stdout
sys.stdin
sys.stderr
输入输出的重定向
python
with open("1.txt",'wb') as fp:
sys.stdout = fp
sys.stdin = fp
print('hello world') # fp.write()
fp.read() # input()
- 中途退出程序
python
sys.exit(0)
# 0表示正常退出;n不为0时,引发SystemExit异常