模块对于python这门高级语言来说格外的重要
我们可以通过各种模块来轻松完成不同的任务要求
在使用模块之前,我们需要先导入模块 eg:
import os : 使用os里面的方法要加模块名os eg:os.system(cmd)
from os import * : 使用os里面的所有方法都不要加模块名os eg:system(cmd)
form os import system : 使用os里面的方法 system 不用加模块名os,用其他的方法就需要 eg: os.popen()
也可以从模块中导入部分方法 ,eg: from os import Popen 只是导入os.Popen方法完全导入到当前文件(可以直接调用,不用加模块名)
接下来,我们来说说python与系统交互的几个内置模块:
OS模块:
os模块提供了如下方法:
1 '''
2 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
3 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
4 os.chmod(file,mode) 更改权限
5 os.curdir 返回当前目录: ('.')
6 os.pardir 获取当前目录的父目录字符串名:('..')
7 os.makedirs('dirname1/dirname2') 可生成多层递归目录
8 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
9 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
10 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
11 os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
12 os.remove() 删除一个文件
13 os.rename("oldname","newname") 重命名文件/目录,若newname存在,则会报错
14 os.stat('path/filename') 获取文件/目录信息
15 os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
16 os.linesep 输出当前平台使用的行终止符,win下为"
",Linux下为"
"
17 os.pathsep 输出用于分割文件路径的字符串
18 os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
19 os.system("bash command") 运行shell命令,直接显示
20 os.popen(cmd) 执行系统命令。执行命令时不会打印任何信息,相当于把执行结果写到文件里面,
所以要查看执行结果需要os.popen('dir').read()
21 os.environ 获取系统环境变量
22 os.path.abspath(path) 返回path规范化的绝对路径
23 os.path.split(path) 将path分割成目录和文件名二元组返回
24 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
25 os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
26 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
27 os.path.isabs(path) 如果path是绝对路径,返回True
28 os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
29 os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
30 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
31 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
32 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
33
34 '''
SYS模块:
1 ''' 2 sys.argv 命令行参数List,第一个元素(sys.argv[0])是程序本身路径,sys.argv[1]...就是后面传递给当前文件的参数 3 sys.exit(n) 退出程序,正常退出时exit(0) 4 sys.version 获取Python解释程序的版本信息 5 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 6 sys.platform 返回操作系统平台名称 7 sys.stdout.write('please:') 8 val = sys.stdin.readline()[:-1] 9 '''
subprocess 模块:
1 ''' 2 为了替换几个老的模块和方法,eg:os.system()、os.spawn*等 3 以后在用python与系统直接调用时,尽量使用subprocess模块 4 5 每次调用subprocess.run() 或call()等命令,都是另外启动一个子进程,所以在shell(或cmd)下的python解释器能看到结果,而在ide看不到(shell、cmd一闪而过) 6 进程直接不能直接通信,所以要把子进程的运行结果返回到父进程,就要通过管道 7 ''' 8 import subprocess 9 10 res = subprocess.run('whoami') #在shell中执行时,执行命令并打印, 11 print('执行结束返回:',res) 12 ''' 13 test14 执行结束返回: CompletedProcess(args='whoami', returncode=0) 15 16 ''' 17 18 a = subprocess.Popen(['python'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 19 a.stdin.write(b'print("hello") ') 20 a.stdin.write(b'print("world") ') 21 print(a.communicate()) 22 ''' 23 (b'hello world ', b'') 24 '''