-
os 模块
2020-12-20 15:59:041.什么是 OS 模块 操作系统接口模块 2.OS 模块的作用 该模块为Python自带的标准库模块 提供了一些方便使用操作系统相关功能的函数 3.什么是环境变量 一般是指在操作系统中用来指定操作系统运行环境的一些参数, ...引入
1.什么是 OS 模块
- 操作系统接口模块
2.OS 模块的作用
- 该模块为Python自带的标准库模块
- 提供了一些方便使用操作系统相关功能的函数
3.什么是环境变量
- 一般是指在操作系统中用来指定操作系统运行环境的一些参数, 比如 : 临时文件夹位置和系统文件夹位置等
- 操作系统运行系统命令的时候, 会到这一系列文件夹中去找你输入的命令在不在里面
4.sys.path 与 os.environ
- sys.path环境变量 : 以列表的形式保存, 存的是一堆文件夹, python查找模块时会检索这个环境变量里的文件夹
- os.environ环境变量 : 是一个字典,一系列的键、值对存储在该字典中,系统环境信息全部存储在该字典中, 当你想让你这个值在整个环境中都能用的到, 你就可以把这个值往os.environ环境变量中添加
一. OS 系列
以下是 OS 的常用方法:
ps : “🔆” 重点使用方法
方法 作用 os.name🔆 指示你正在使用的工作平台, Windows为 ‘nt’,Linux/Unix为 ‘posix’ os.getcwd 得到当前工作目录,即当前python脚本工作的目录路径 os.remove(file)🔆 删除一个文件 os.rename(“oldname”,“newname”)🔆 重命名文件/目录 os.stat(file) 获得文件属性 os.mkdir(name)🔆 创建目录 os.makedirs(‘dirname1/dirname2’)🔆 可生成多层递归目录 os.rmdir(name)🔆 删除目录 os.removedirs(r“c:\python”) 若目录为空,则删除,并递归到上一级目录,若也为空,则删除,依此类推 os.system(“bash command”)🔆 运行shell命令, 直接显示 os.linesep 给出当前平台的行终止符,Windows使用 ‘\r\n’,Linux使用 ‘\n’, Mac使用 ‘\r’ os.listdir(‘dirname’)🔆 返回指定目录下的所有文件和目录名, 包括隐藏文件,并以列表方式打印 os.walk(dir)🔆 用类似于深度遍历的方式遍历文件夹中的子文件夹以及文件,最基本的显示方式为(root_path,[file_dirs],[files]) os.curdir 返回当前目录(’.’) os.chdir(‘dirname’) 改变工作目录到’dirname’ os.pardir 获取当前目录的父目录字符串名:(’…’) os.sep 取代操作系统特定的路径分隔符, win下为"\", Linux下为"/" os.pathsep 输出用于分割文件路径的字符串 win下为" ; " , Linux下为" :" os.environ🔆 获取系统环境变量 - os.environ 使用 (重点)
import os print(os.environ) # environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', ....省略}) print(type(os.environ)) # <class 'os._Environ'> # 向环境变量中设置值,取值 # 后期我们链接数据库的用户名密码,不写死到代码中,而是配置在环境变量中,使用代码获取 os.environ["NAME"] = "shawn" name = os.environ.get("NAME") print(name) # shawn
- os.walk( ) 的使用
import os dir_path = os.walk("F:\Pycharm File\PycharmProjects\python正课\day14") print(dir_path) # <generator object walk at 0x000001357D44AAC8> (拿到的是一个生成器) 🍓我们对其循环取值 for i in dir_path: print(i) '''輸出 ('F:\\Pycharm File\\PycharmProjects\\python正课\\day14', ['bbbb'], ['aaa.txt', '装饰器语法糖.py']) ('F:\\Pycharm File\\PycharmProjects\\python正课\\day14\\bbbb', [], ['.sss.txt', 'aaa.txt']) ''' # 我们可以发现 os.walk() 以元组为单位区分每一层, 每一层又分为三个部分(根目录路径, 根目录下的文件夹列表, 根目录下的文件列表) 🍓我们也可以将三个部分遍历出来分开查看 for root,dirs,files in dir_path: print(root) print(dirs) print(files) print("---------->") '''输出 F:\Pycharm File\PycharmProjects\python正课\day14 ['bbbb'] ['aaa.txt', '装饰器语法糖.py'] ----------> F:\Pycharm File\PycharmProjects\python正课\day14\bbbb [] ['.sss.txt', 'aaa.txt'] ----------> ''' 🍓计算一个文件夹的大小示例 import os def dir_size(): while True: dir_path = input("请输入文件夹路径(q退出)>>").strip() size = 0 # 初始大小 if dir_path.lower() == "q":break if not os.path.isdir(dir_path): # 判断是否存在该目录 print("没找到该文件夹,请重新输入") continue path_list = os.walk(dir_path) # 得到生成器 for root,dirs,files in path_list: # 遍历三个元素 for i in files: # 每次遍历取出文件 size += os.path.getsize(os.path.join(root,i)) # 拼接文件路径并计算大小 print(f"该目录总大小:{size}") dir_size()
二. OS.path 系列
os.path 系列主要用于获取文件的属性, 以下是常用方法 :
ps : “🔆” 重点使用方法
方法 作用 os.path.abspath(path) 返回规范化的绝对路径 (多个"\"只识别一个) os.path.basename(path)🔆 返回文件名 (如果传入的是路径,会切出文件名) os.path.dirname(path)🔆 返回文件路径 (就是当前文件或目录的上一级目录) os.path.exists(path)🔆 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False。 os.path.getatime(path) 返回最近访问时间(浮点型, 有秒级) os.path.getmtime(path) 返回最近文件修改时间 os.path.getctime(path) 返回文件 path 创建时间 os.path.getsize(path)🔆 返回文件大小,如果文件不存在就返回错误 os.path.isabs(path) 判断是否为绝对路径 os.path.isfile(path)🔆 判断路径是否为文件 os.path.isdir(path)🔆 判断路径是否为目录 os.path.join(path1, path2,path3)🔆 把目录和文件名拼接成一个路径 os.path.normcase(path)🔆 转换path的大小写和斜杠 (只在 windows 平台上有效) os.path.normpath(path)🔆 规范path字符串形式 os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组 ⛅Linux和Mac平台上, 该函数会原样返回path, 在Windows平台上会将路径中所有字符转换为小写, 并将所有斜杠转换成反斜杠 import os res = os.path.normcase('C:/SHAWN///SOng\\\hai') print(res) # c:\shawn\\\song\\hai
⛅规范路径, 并且会识别"..", 自动将其返回上一级, 分隔符会转成当前平台使用的分隔符 import os res = os.path.normpath("C:///SHAWn\\song\../xing/") print(res) # C:\SHAWn\xing res2 = os.path.normpath("D:\\Shawn/song\hai/../..") print(res2) # D:\Shawn (返回了两次)
三. OS 路径处理
1.方法一 (通用)
- 这种方法比较通用, Python2 和 Python3 中都适用
- 可以先使用 os.path.abspath( ) 规范一下返回路径
import os print(os.path.abspath(__file__)) #F:\Pycharm File\PycharmProjects\python正课\day19\test.py BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) print(BASE_DIR) # F:\Pycharm File\PycharmProjects\python正课 (返回上一级两次) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(BASE_DIR) # F:\Pycharm File\PycharmProjects\python正课 (返回上一级两次) BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), "../..")) print(BASE_DIR) # F:\Pycharm File\PycharmProjects (返回上一级三次) BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) print(BASE_DIR) # F:\Pycharm File\PycharmProjects (返回上一级三次)
2.方法二
- 使用比较简单
- op.pardir : 上一级
- op.path.normpath( ) : 规范path字符串形式
import OS print(os.path.abspath(__file__)) #F:\Pycharm File\PycharmProjects\python正课\day19\test.py BASE_DIR = os.path.normpath(os.path.join(__file__,os.pardir,os.pardir)) print(BASE_DIR) # F:\Pycharm File\PycharmProjects\python正课 (返回上一级两次) BASE_DIR = os.path.normpath(os.path.join(__file__,os.pardir,"..")) print(BASE_DIR) # F:\Pycharm File\PycharmProjects\python正课 (返回上一级两次) BASE_DIR = os.path.normpath(os.path.join(__file__,"..","..","..")) print(BASE_DIR) # F:\Pycharm File\PycharmProjects (返回上一级三次)
四.灭霸程序
输入文件夹路径, 将该文件下和子文件夹下所有的文件随机删除一半
import os,random def Baba(): while True: dir_path = input("请输入实验文件夹(q退出)>>").strip() file_list = [] if dir_path.lower() == "q":break if not os.path.isdir(dir_path): print("该路径不是一个文件夹, 请重新输入");continue res = os.walk(dir_path) for root, dirs, files in res: for file in files: file_list.append(os.path.join(root,file)) print(f"正在统计文件个数...\n该文件夹下共有:{len(file_list)}个文件") y_n = input("你确定要启动灭霸程序吗?(y/任意n)>>").strip() if not y_n.lower() == "y":continue rm_path = random.sample(file_list,len(file_list)//2) for i in rm_path: file_list.remove(i);os.remove(i) print(f"删除了文件:{i}") print(f"该文件夹下剩余:{len(file_list)}个文件") Baba()
-
os模块
2018-09-13 15:12:01一、什么是os模块 os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。...一、什么是os模块
os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,所以离不了os模块。python编程时,经常和文件、目录打交道,这是就离不了os模块,本节内容将对os模块提供的函数进行详细的解读
二、常用的os模块命令
os.name——name顾名思义就是’名字’,这里的名字是指操作系统的名字,主要作用是判断目前正在使用的平台,并给出操作系统的名字,如Windows 返回 ‘nt’; Linux 返回’posix’。注意该命令不带括号。
os.getcwd()——全称应该是’get current work directory’,获取当前工作的目录,如:返回结果为:’C:\Program Files\Python36’。注意该命令带括号,除了第一个命令不带括号之外,以下命令基本都带括号。
os.listdir(path)——列出path目录下所有的文件和目录名。Path参数可以省略。例:
以列表的形式全部列举出来,其中没有区分目录和文件。
os.remove(path)——删除path指定的文件,该参数不能省略。
os.rmdir(path)——删除path指定的目录,该参数不能省略。
os.mkdir(path)——创建path指定的目录,该参数不能省略。
注意:这样只能建立一层,要想递归建立可用:os.makedirs()
os.path.isfile(path)——判断指定对象是否为文件。是返回True,否则False
os.path.isdir(path)——判断指定对象是否为目录。是True,否则False。例
- os.path.exists(path)——检验指定的对象是否存在。是True,否则False.例:
os.path.split(path)——返回路径的目录和文件名,即将目录和文件名分开,而不是一个整体。此处只是把前后两部分分开而已。就是找最后一个’/’。
os.system(cmd)——执行shell命令。返回值是脚本的退出状态码,0代表成功,1代表不成功,例:
os.chdir(path)——’change dir’改变目录到指定目录
os.path.getsize()——获得文件的大小,如果为目录,返回0
os.path.abspath()——获得绝对路径。
os.path.join(path, name)—连接目录和文件名,与os.path.split(path)相对。
16.os.path.basename(path)——返回文件名
- os.path.dirname(path)——返回文件路径
-
OS模块
2019-09-18 17:02:47因此Python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。 该链接是os和os.path模块中关于文件/目录常用的函数使用方法 ...Python是跨平台的语言,也即是说同样的源代码在不同的操作系统不需要修改就可以同样实现。
因此Python的作者就倒腾了OS模块这么一个玩意儿出来,有了OS模块,我们不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。
该链接是os和os.path模块中关于文件/目录常用的函数使用方法
(https://fishc.com.cn/forum.php?mod=viewthread&tid=45512&extra=page=1&filter=typeid&typeid=403)