72. import 导入标准模块(os模块)
文章目录
- 72. import 导入标准模块(os模块)
- 1. 标准模块知识回顾
- 2. os 模块的基本介绍
- 3. import 导入标准模块
- 1. 方法1
- 2. 方法2
- 1. 导包不同
- 2. 声明不同
- 3. 路径不同
- 4. 概括
- 3. 方法3
- 4. 方法4
- 4. 调用模块或库中的类、函数、变量
- 5. os模块的路径操作
- 1. 准备工作
- 2. os.getcwd 获取当前工作目录
- 3. os.mkdir 创建新的目录
- 4. os.makedirs 递归创建目录
- 5. os.remove( ) 删除指定文件
- 6. os.rmdir( ) 删除非空目录
- 7. os.listdir( )返回指定文件夹下,文件或文件夹名字的列表
- 6. os模块的进程管理
- 1. 启动计算器进程
- 2. 启动画图进程
- 3. 启动远程连接
- 7. 直接调用模块的函数 类 变量
- 8. 总结
- 1. 知识总结
- 2. 代码总结
- 3. 图片总结
- 9. 课后练习
1. 标准模块知识回顾
标准模块是 Python 自带的模块,不需要安装就能直接调用。
调用语法为:import+模块名
【备注】图片来源于CSDN博主程序员与Python
。
2. os 模块的基本介绍
os 模块是 Python 编程语言中一个常用的标准模块。
os 是 operation system 的缩写。
operation system 译为操作系统。
operation [ˌɒpəˈreɪʃn]:操作。
system [ˈsɪstəm]:系统。
os 模块支持文件和目录操作,进程管理,环境变量管理等功能。
【os 模块常用功能】
-
文件的目录、路径操作
-
进程管理
-
环境参数的设置
3. import 导入标准模块
标准模块是 Python 自带的模块,不需要安装。
导入标准模块主要有4种方法:
1. 方法1
【语法】
import
+ 模块名
import [ˈɪmpɔːt]:导入。
【示例】
import os
如上面的代码所示,当我需要导入某个标准模块时,直接在 import 后接上模块名即可。
这里的 import 是导入的意思。
这里的 os 就是模块名。
os 可以替换成任意你想导入的 Python 中的标准模块。
import os 意思是导入 os 模块。
【备注】
注意 import 与模块名之间有1个空格。
2. 方法2
【语法】
from 库名 import *
【示例】
from turtle import *
【语法要点】
-
from 关键字;
-
turtle 模块名;
-
import 关键字;
-
*
turtle [ˈtɜːtl]:海龟。
turtle 是第3方模块,作用是绘图。
第3方模块需要先安装,才能调用。
安装方法下节讲。
【import turtle 和 from turtle import * 的区别】
1. 导包不同
import turtle
导入了 turtle
包以及所有的内部成员。
from turtle import *
未导入 turtle 包,只是从这个命名空间导入了所有的成员。
2. 声明不同
import turtle
不能使用未声明的变量。因此,要对每项加上包的前缀。
from turtle import *
可以直接使用命名空间内已经定义好的项目名称。
3. 路径不同
import turtle
的所有函数是相对路径,每次使用模块中的函数都要确定引用。
from turtle import *
的所有函数都是绝对路径,直接使用函数就可以了。
4. 概括
import turtle
只是导入 turtle
这个文件,如果要用文件里的函数,类等方法需要turtle.xxx
,即需要写明模块名
,然后是英文小圆点
,最后再写明函数或方法名。
from turtle import *
是导入 turtle
文件里的函数,类等方法,直接使用文件里的函数,类等方法即可,不需要加前缀turtle和实心点。
【备注】
两者的区别这里仅做简单叙述,大家知道有这么个东西即可,后面实操的时候会详细讲解。
3. 方法3
【语法】
import 模块名 as 简写的模块名
【示例】
import pandas as pd
【语法要点】
-
import 关键字;
-
pandas 是模块名
-
as 关键字
-
pd 是简写的模块名;(这个名字你可以自己简写)
import pandas as pd
表示导入 pandas 模块,并简写为 pd。
pandas 是一个用于数据分析的 Python 模块。
pandas 是第三方库,需要安装才能调用,安装方法下节讲解。
我们在做数据分析时候会频繁的用到这个模块,为了书写代码方便,我们就给它起一个简单的名字,方便我们敲代码。
敲 pandas 和敲 pd 相比,肯定 pd 更节约时间。
居里夫人的全名叫玛丽亚·斯克沃多夫斯卡-居里,为了方便,我们通常成简写为玛丽·居里。
这里的 as 可以理解为简写为的意思。
大家目前先掌握方法1即可。
方法2和方法3仅做了解,后面的实操会有详细讲解。
4. 方法4
除了先导入模块,再调用模块中的类、函数、变量。
我们还可直接导入模块中的类、函数、变量。
【语法】
from 模块名 import 类名/函数名/变量名
【示例】
from os import system
from os import system
译为从 os 库中导入 system 函数。
【语法要点】
-
from 关键字;
-
os 库名;
-
import 导入;
-
system 函数名。
4. 调用模块或库中的类、函数、变量
导入模块和库后,我们就能使用模块和库里面具体的功能。
调用模块或库中的类、函数、变量的语法如下:
-
调用模块或库的类:
模块名.类名()
,如 csv.DictReader() -
调用模块或库的函数:
模块名.函数名()
,如 os.mkdir() -
调用模块或库的变量:
模块名.变量名
,如 os.name
【备注】
DictReader 是首字符是大写,它是一个类名,具体的作用后面会学。
5. os模块的路径操作
1. 准备工作
-
在D盘新建文件夹
72
; -
在
72
文件夹中新建一个72.py
文件; -
在
72
文件夹中新建一个工作
文件夹; -
在
工作
文件夹中新建一个成绩表.txt
文件; -
用 vscode 编辑器打开
72
文件夹; -
在
72.py
文件中编写下面的代码。
2. os.getcwd 获取当前工作目录
cwd
是 current working Directory 的缩写,译为当前工作目录。
当前工作目录就是我们现在编写代码的文件所在的文件夹。
get [ɡet]:得到。
current [ˈkʌrənt]:当前的。
working [ˈwɜːkɪŋ]:工作。
directory [dəˈrektəri]:目录。
在使用某个模块之前,我们需要先导入该模块,其导入代码如下:
# 模块的导入语法
# import 模块名
import os
只有导入模块后,我们才能使用模块里面具体的功能。
调用 os 模块的 getcwd 函数获取当前的工作目录:
调用模块下的函数语法:模块名.函数名()
:
【体验代码】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# getcwd作用是获取当前工作目录
os.getcwd( )
【终端输出】
'd:\\72'
【返回值】
返回的'd:\\72'
就是当前工作目录。
当前工作目录就是我们现在编写代码的72.py文件
所在的文件夹。
现在我们把72
文件复制到电脑桌面,并用vscode打开桌面的72
文件夹,查看返回的工作目录。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# getcwd作用是获取当前工作目录
os.getcwd( )
【终端输出】
'c:\\Users\\xiaoyuzhou\\Desktop\\72'
【返回值】
返回的'c:\\Users\\xiaoyuzhou\\Desktop\\72'
就是当前工作目录。
【温馨提示】
vscode 编辑器打开的文件不同,则返回的工作目录不同。
这里的getcwd
函数不需要传递参数。
3. os.mkdir 创建新的目录
mkdir
是 make directory 的缩写,译为创建目录。
make [meɪk]:创建。
directory [dəˈrektəri]:目录。
mkdir 的作用就相当于新建文件夹。
【体验代码】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# mkdir作用是创建目录
os.mkdir("花名册")
运行上述代码,我们发现在72
文件夹里成功新建了一个名为花名册
的文件夹。
mkdir 函数的参数为路径,可以是相对路径,也可以是绝对路径。
这里的花名册
就是相对路径,意思就是在当前文件夹下新建一个花名册
文件夹。
【路径知识回顾】
相对路径使用两个特殊符号表示:点(.) 和双点(…)。
一个点. 表示文件或文件夹所在的当前目录。
两个点… 表示当前目录的上一级目录。
.\
可以省略的。
建议在路径参数前进加一个字母R或r,可以实现路径转义,避免路径参数中出现转义字符。
【路径参数解析】
我们在当前文件夹72
里新建一个文件夹花名册
,用相对路径可以表述为.\花名册
。
.\
通常可以省略,因此这里参数直接写了花名册
。
【当参数为绝对路径】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# mkdir作用是创建目录
os.mkdir(r"C:\Users\xiaoyuzhou\Desktop\研二")
C:\Users\xiaoyuzhou\Desktop\研二
这里的参数为绝对路径。
前面增加的r作用是实现路径转义,避免程序因路径参数中含有转义字符而报错。
运行上述代码,我们可在电脑桌面新建了一个名为研二
的文件夹。
绝对路径的地址可以用【shift】快捷键获取。
【mkdir 只能新建不存在的目录】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# mkdir作用是创建目录
os.mkdir("花名册")
【终端输出】
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: '花名册'
【温馨提示】
运行上述代码,我们发现:
因为72文件夹里已经有一个名为花名册的文件夹,因此程序报错。
如果创建的目录已经存在,程序会报错提示文件已存在。
mkdir 只会创建不存在的目录。
4. os.makedirs 递归创建目录
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# makedirs作用递归创建目录
os.makedirs("体检表\英语系\大一")
makedirs 就是 make directories 的缩写。
directory [dəˈrektəri]:目录。
directory 的复数形式为 directories
这里的递归是什么意思的?
大家观察代码运行后,72文件夹里的变化。
代码运行成功后,我们在72
文件夹里新建了一个体检表
文件夹。
在体检表
文件夹里新建了一个英语系
文件夹。
在英语系
文件夹里新建了一个大一
文件夹。
makedirs 的作用可以理解为依次创建文件夹。
【参数为绝对路径】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# makedirs作用递归创建目录
os.makedirs(r"C:\Users\xiaoyuzhou\Desktop\体检表\英语系\大一")
运行上述代码,大家可以桌面查找新建立的文夹。
5. os.remove( ) 删除指定文件
remove[rɪˈmuːv]:去掉、废除。
remove 的作用是删除指定文件。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# remove 的作用是删除指定文件
os.remove("工作\成绩表.txt")
运行上述代码,我们发现72
文件夹里的工作文
夹里的成绩表.txt
被成功删除。
"工作\成绩表.txt"
是成绩表.txt
文件的相对路径。
这里的参数同样可以改成绝对路径。
6. os.rmdir( ) 删除非空目录
rmdir 是 remove directory的缩写,译为删除目录。
directory [dəˈrektəri]:目录。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# rmdir的作用是删除目录
os.rmdir("体检表\英语系\大一")
运行上述代码,英语系
文件夹里的大一
文件夹被删除。
【温馨提示】
rmdir 的作用只能删除空目录。
空目录即空文件夹。
即如果文件夹里含有其它文件夹或文件,程序报错。
【体验代码】
删除体检表
文件夹,程序报错。
因为体检表
文件夹里还有一个英语系
文件夹。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# rmdir的作用是删除目录
os.rmdir("体检表")
【终端输出】
OSError: [WinError 145] 目录不是空的。: '体检表'
目录不是空的
,意思就是体检表
文件夹里还有一个文件夹或文件,因此程序报错。
7. os.listdir( )返回指定文件夹下,文件或文件夹名字的列表
listdir 是 list directory 的缩写,译为目录的列表。
list [lɪst]:列表。
directory [dəˈrektəri]:目录。
【体验代码】
查看72
文件夹里的文件目录:
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# listdir返回文件或文件夹名字的列表
os.listdir("..\\72")
【终端输出】
['72.ipynb', 'img', '体检表', '工作', '花名册']
【返回值】
程序返回的是一个列表。
列表里存储有72
文件夹里的所有文件、文件夹名称。
【当listdir 函数的参数为空时,默认返回的是当前目录下的文件夹列表】
当前文件夹即72
文件夹。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# listdir返回文件或文件夹名字的列表
os.listdir()
【终端输出】
['72.ipynb', 'img', '体检表', '工作', '花名册']
【查看体检表文件夹的文件目录】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# listdir返回文件或文件夹名字的列表
os.listdir("..\\72\\体检表")
【终端输出】
['英语系']
返回的列表是英语系
,因为体检表
里还有一个英语系
文件夹。
6. os模块的进程管理
1. 启动计算器进程
system[ˈsɪstəm]:系统。
calculator[ˈkælkjuleɪtə]:计算器。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# cala:打开计算器
os.system('calc')
【终端输出】
0
【语法解析】
-
os 模块名
-
.
英文小圆点 -
system 函数名
-
( )
英文圆括号 -
函数的参数
【温馨提示】
当 system
函数的参数为 calc
时,作用就是打开电脑计算机进程。
注意 calc
需 要添加英文引号。
【返回结果】
运行上述代码,程序会自动打开电脑的计算器进程。
2. 启动画图进程
mspaint:画图。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# mspaint 打开画图软件
os.system('mspaint')
【终端输出】
0
【温馨提示】
当 system
函数的参数为 mspaint
时,作用就是打开电脑画图软件。
注意mspaint
前后需要加一个英文引号。
【返回结果】
运行上述代码,程序会自动打开电脑的画图软件。
3. 启动远程连接
Microsoft terminal services client 通常简写为 mstsc
。
Microsoft [ˈmaɪkrəʊsɒft]:微软公司。
terminal [ˈtɜːmɪnl]:末端,终点。
services [ˈsɜːvɪsɪz]:服务。
client [ˈklaɪənt]客户端。
mstsc
意思是创建与终端服务器或其他远程计算机的连接,即远程桌面连接。
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# mstsc 启动远程连接
os.system('mstsc')
【终端输出】
0
【温馨提示】
当 system
函数的参数为 mstsc
时,作用就是打开电脑远程桌面连接。
注意mstsc
前后需要加一个英文引号。
启动进程后,系统自动返回数值0
。
【返回结果】
运行上述代码,程序自己打开电脑的远程连接。
7. 直接调用模块的函数 类 变量
【下面的代码为先导入模块,然后再调用模块的函数】
import os
os.system('calc') # 打开计算器
os.system('mspaint') # 打开画图软件
os.system('mstsc') # 打开远程连接
【终端输出】
0
【下面的代码为直接导入模块的函数】
from os import system
system('calc') # 打开计算器
system('mspaint') # 打开画图软件
system('mstsc') # 打开远程连接
【终端输出】
0
上面2段代码的作用是一样的,都能打开电脑的计算器、画图、远程连接程序。
【区别如下】
8. 总结
1. 知识总结
【导入标准模块的4种方法】
-
import
+模块名
-
from turtle import *
-
import pandas as pd
:表示导入 pandas 模块,并简写为 pd。 -
from os import system
:表示从 os 库中导入 system 函数。
【调用模块或库中的类、函数、变量】
-
调用模块或库的类:
模块名.类名()
,如 csv.DictReader() -
调用模块或库的函数:
模块名.函数名()
,如 os.mkdir() -
调用模块或库的变量:
模块名.变量名
,如 os.name
【os 的路径操作】
os.getcwd
获取当前工作目录
os.mkdir
创建新的目录
os.makedirs
递归创建目录
os.remove( )
删除指定文件
os.rmdir( )
删除非空目录
os.listdir( )
返回指定文件夹下,文件或文件夹名字的列表
【os 模块的进程管理】
os.system('calc')
启动计算器进程
os.system('mspaint')
启动画图进程
os.system('mstsc')
启动远程连接
2. 代码总结
【os路径操作】
import os
# getcwd作用是获取当前工作目录
os.getcwd( )
# mkdir作用是创建目录
os.mkdir("花名册")
# makedirs作用递归创建目录
os.makedirs("体检表\英语系\大一")
# remove 的作用是删除指定文件
os.remove("工作\成绩表.txt")
# rmdir的作用是删除目录
os.rmdir("体检表\英语系\大一")
# listdir返回文件或文件夹名字的列表
os.listdir("..\\72\\体检表")
【os进程管理:导入模块】
import os
os.system('calc') # 打开计算器
os.system('mspaint') # 打开画图软件
os.system('mstsc') # 打开远程连接
【os进程管理:导入模块的函数】
from os import system
system('calc') # 打开计算器
system('mspaint') # 打开画图软件
system('mstsc') # 打开远程连接
3. 图片总结
9. 课后练习
-
用 os 的函数在 D 盘中新建一个
成绩
文件夹,在成绩
文件夹里新建一个各班级成绩
文件夹。 -
用with open 在
各班级成绩
文件夹中新建3txt文件,名称分别为1班成绩
、2班成绩
、3班成绩
。 -
在3个txt文件中分别写入
张三,30分
,李四,40分
,王五,50分
。 -
用os的函数在输出
各班级成绩
文件夹中的文件目录。
【思路解析】
-
这里同时创建2个文件夹,我们用 os 的 makedirs 函数;
-
makedirs 的参数:
绝对路径参数:r"D:\成绩\各班级成绩"
相对路径参数:假设仍然在72.ipynb
文件夹里编写代码,那当前目录是72
文件夹,72文
件夹刚好在D
盘,那在D
盘创建的相对路径即为r"..\\成绩\\各班级成绩"
。
..\\
表示72
文件夹的上一级目录。
with open ( ) as f :
可以以自动关闭文件的方式写入文件。
open 函数的3个参数:
-
路径参数:路径参数和 makedirs 参数一样,只是多加一个文件名即可。
-
mode参数,这里要新建文件,mode 参数可以选
w
或a
。
w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。
a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。
- encoding=“utf-8”
【方法1:绝对路径】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# makedirs作用递归创建目录
os.makedirs(r"D:\成绩\各班级成绩")
#
with open ( r"D:\成绩\各班级成绩\1班成绩.txt", mode = "w", encoding="utf-8" ) as f :
f.write("张三,30分")
with open (r"D:\成绩\各班级成绩\2班成绩.txt", mode = "a", encoding="utf-8" ) as f :
f.write("李四,40分")
with open (r"D:\成绩\各班级成绩\3班成绩.txt", mode = "a", encoding="utf-8" ) as f :
f.write("王五,50分")
# listdir返回文件或文件夹名字的列表
os.listdir(r"D:\成绩\各班级成绩")
【终端输出】
['1班成绩.txt', '2班成绩.txt', '3班成绩.txt']
运行上述代码后,可在 D 盘查看新建的文件夹和文件。
查看后删除一整个成绩
文件夹,用相对路径再次编写代码。
【方法2:相对路径】
# 模块的导入语法
# import 模块名
import os
# 调用模块的函数
# 模块名.函数名
# makedirs作用递归创建目录
os.makedirs(r"..\\成绩\\各班级成绩")
with open ( r"..\\成绩\各班级成绩\1班成绩.txt", mode = "w", encoding="utf-8" ) as f :
f.write("张三,30分")
with open ( r"..\\成绩\各班级成绩\2班成绩.txt", mode = "w", encoding="utf-8" ) as f :
f.write("李四,40分")
with open ( r"..\\成绩\各班级成绩\3班成绩.txt", mode = "w", encoding="utf-8" ) as f :
f.write("王五,50分")
# listdir返回文件或文件夹名字的列表
os.listdir('..\\成绩\各班级成绩')
【终端输出】
['1班成绩.txt', '2班成绩.txt', '3班成绩.txt']