【python基础】—内置模块os常用功能介绍

news2024/10/7 13:11:51

文章目录

  • 前言
  • 一、模块变量
    • os.name
    • os.environ
  • 二、文件与文件夹
    • os.getcwd(path)
    • os.chdir(path)
    • os.listdir(path)
    • os.mkdir(path)
    • os.remove(path)
    • os.rename(src,dst)
  • 三、os的子模块:Path模块
    • os.path.abspath(path)
    • os.path.basename(path)
    • os.path.dirname(path)
    • os.path.split(path)
    • os.path.join(path1[,path2[,...])
    • os.path.exists(path)
    • os.path.isabs(path)
    • os.path.isfile(path)
    • os.path.isdir(path)


前言

os就是"operating system"的缩写,os模块提供的就是各种python程序与操作系统进行交互的接口。通过使用os模块,能够处理平台间的差异问题,使得编写好的程序无需做任何改动就能在另外的平台上运行。


一、模块变量

os.name

  • 功能:导入依赖操作系统模块的名字,指示你正在使用的平台。下面是目前被注册的名字:‘posix’, ‘nt’, ‘mac’, ‘os2’, ‘ce’, ‘java’, ‘riscos’。
    其中 ‘posix’ 是 “Portable Operating System Interface of UNIX” (可移植操作系统接口)的缩写。Linux和Mac OS均会返回该值;‘nt’ 是 “Microsoft Windows NT”,因此Windows操作系统会返回该值;‘java’ 则是Java虚拟机环境下的返回值。

举例:在我的电脑(win10)上执行下述代码,返回值是 ‘nt’:

import os 
os.name

在这里插入图片描述

os.environ

  • 功能:可以返回各类环境变量相关信息。返回值是一个映射,其中的各个键值对,键是环境变量名,值则是环境变量对应的值。

举例:其中键为“HOMEPATH”(Windows 下,Linux 下为“HOME”),对应的值就是用户主目录的路径。在我的电脑(win10)上执行下述代码。

import os 
os.environ["HOMEPATH"]

在这里插入图片描述

二、文件与文件夹

os.getcwd(path)

  • 功能:“get the current working directory”,返回当前工作路径的字符串。
    在程序运行的过程中,无论物理上程序在实际存储空间的什么地方,当前工作路径即可以认为程序所在的路径;与之相关的"相关路径"、"同目录下模块导入"等相关操作均以"当前工作路径"为准。

举例:在python文件中,返回的则是文件所在的位置。

import os
os.getcwd()

在这里插入图片描述

os.chdir(path)

  • 功能:“change the directory”,改变当前工作路径。参数既可以是文本或字节型字符串,也可以是一个文件描述符。
    注意:若指定目录路径不存在,则会抛出FileNotFoundError异常。

举例:

import os 
os.chdir("F:\\python_machine_learing_work\\501_model\\data")
os.getcwd()

在这里插入图片描述

os.chdir()方法在实际开发中有许多常见应用场景,包括但不限于:

  • 执行某个脚本之前,先切换到脚本所在的目录路径,以确保脚本能够正常运行。
  • 在处理文件时,先切换到文件所在的目录路径,方便进行文件的读写操作。

举例:读取文件时,先切换到文件所在的目录路径(os.path.dirname),再读取文件名(os.path.basename)。

def read_file(filepath):
    os.chdir(os.path.dirname(filepath))  #os.path.dirname后面会讲到。
    return pd.read_csv(os.path.basename(filepath),encoding='utf-8')

file_pos="F:\\python_machine_learing_work\\501_model\\data\\第一次建模用的样本数据\\训练集\\v1_6_feature.csv"

data_pos=read_file(file_pos)
  • 在处理多个项目时,切换到不同的项目目录路径,以便于对不同项目的文件和目录进行操作。

os.listdir(path)

  • 功能:“list directories”,返回指定当前path下的全部文件夹和文件的名字的列表。这个列表以字母顺序,各元素均为字符串。它不包括 ‘.’ 和 ‘..’ 即使它在文件夹中。

举例:返回指定当前目录下的全部文件夹和文件的名字的列表。

import os
os.listdir("F:\\python_machine_learing_work\\501_model\\data")

在这里插入图片描述

举例:返回当前目录下所有文件而非文件夹的名称列表。

import os
def get_filelists(file_dir):	
    list_directory = os.listdir(file_dir)
    filelists = []
    for directory in list_directory:
        # os.path 模块稍后会讲到
        if(os.path.isfile(directory)):
            filelists.append(directory)
    return filelists

get_filelists("F:\\python_machine_learing_work\\501_model\\data")

在这里插入图片描述

os.mkdir(path)

  • 功能:“make directory”,新建一个名为path的文件夹。
    注意:该函数只能新建一个全新名称文件夹,如果文件夹已经存在,会报FileExistsError异常。
    该函数只能在已有的目录路径下面新建一级目录路径,否则(即新建多级目录路径)会报FileNotFoundError异常。如果要新建多级目录路径,可以使用os.makedirs()来完成任务。

举例:新建已经存在的文件夹,会报FileExistsError异常。

import os
os.mkdir("第一次建模用的样本数据")

在这里插入图片描述

举例:新建多级目录路径,会报FileNotFoundError异常。

import os
os.mkdir("test\\test_1\\test2")

在这里插入图片描述

新建多级目录路径,应该使用makedirs()。

import os
os.makedirs("test\\test_1\\test2")

os.remove(path)

  • 功能:删除路径为path的文件。
    注意:如果path是路径是文件夹而非文件的话,会报FileNotFoundError异常。删除文件夹应该使用os.rmdir()函数。

举例:删除文件,运行成功。

import os 
os.remove("F:\\python_machine_learing_work\\501_model\\data\\test\\test.txt")

举例:删除文件夹,会报FileNotFoundError异常。

import os 
os.remove("F:\\python_machine_learing_work\\501_model\\data\\test")

在这里插入图片描述

os.rename(src,dst)

  • 功能:是将文件或路径重命名,即将src指向的文件或文件夹重命名为dst指定的名称。
    注意:如果指定的目标文件或者文件夹在其他路径下,该函数还可实现文件或者文件夹的“剪切并粘贴”功能。但无论直接原地重命名还是“剪切粘贴”,中间目录路径都必须要存在,否则就会报FileNotFoundError异常。如果该文件或者文件夹已存在,会报FileExistsError异常。

举例:同一个文件夹下面重命名。

import os 
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test","F:\\python_machine_learing_work\\501_model\\data\\test_new")

举例:不同文件夹下面重命名,可实现文件或者文件夹的“剪切并粘贴”功能。

import os ,
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test","F:\\python_machine_learing_work\\501_model\\test_new")

举例:如果该文件或者文件夹已存在,会报FileExistsError异常。

import os 
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test_new","F:\\python_machine_learing_work\\501_model\\test_new")

在这里插入图片描述

举例:如果中间目录路径都必须不存在,就会报FileNotFoundError异常。

import os 
os.rename("F:\\python_machine_learing_work\\501_model\\data\\test_new","F:\\python_machine_learing_work\\test\\test_new")

在这里插入图片描述


三、os的子模块:Path模块

os.path.abspath(path)

  • 功能:将传入路径规范化,返回一个相应的绝对路径格式的字符串。

举例:当传入路径符合“绝对路径”的格式时,该函数仅仅将路径分隔符替换为适应当前系统的字符,不做其他任何操作,并将结果返回。所谓“绝对路径的格式”,其实指的就是一个字母加冒号,之后跟分隔符和字符串序列的格式:

import os 
os.path.abspath("F:\python_machine_learing_work")

在这里插入图片描述

举例:当指定的路径不符合上述格式时,该函数会自动获取当前工作路径,并使用os.path.join()函数将其与传入的参数组合成为一个新的路径字符串。

import os 
os.path.abspath("hello")

在这里插入图片描述

os.path.basename(path)

  • 功能:返回文件名,即传入路径的最下级目录名或者文件名。

举例:

import os 
os.path.basename("F:\\python_machine_learing_work")

在这里插入图片描述

os.path.dirname(path)

  • 功能:返回文件路径。即最后一个分隔符前的整个字符串。

举例:

import os 
os.path.dirname("F:\\python_machine_learing_work\\501_model\\data\\第一次建模用的样本数据")

在这里插入图片描述

os.path.split(path)

  • 功能: 把路径分割成 dirname 和 basename,返回一个元组。即是将path以最后一个分隔符为界,分成两个字符串,前os.path.dirname()和os.path.basename()的返回值分别是函数os.path.split()返回值的第一、第二个元素。

举例:

import os 
os.path.split("F:\\python_machine_learing_work\\501_model\\data")

在这里插入图片描述

os.path.join(path1[,path3[,…])

  • 功能:把目录路径与文件名合成一个路径。传入的字符要为字符串,所以一般的用法是将第一个参数作为父级目录,之后每一个参数即使下一级目录,从而组合成一个新的符合逻辑的目录路径。

举例:

import os 
os.path.join("F:\\", "python_machine_learing_work")

在这里插入图片描述

举例:如果传入路径中存在一个“绝对路径”格式的字符串,且这个字符串不是函数的第一个参数,那么其他在这个参数之前的所有参数都会被丢弃,余下的参数再进行组合。更准确地说,只有最后一个“绝对路径”及其之后的参数才会体现在返回结果中。

import os 
os.path.join("just", "do", "D:\\", "python", "dot", "F:\\", "python_machine_learing_work")

在这里插入图片描述

os.path.exists(path)

  • 功能:判断路径是否存在,存在则返回 True,路径损坏返回 False。

举例:

import os 
os.path.exists("F:\\python_machine_learing_work")

举例:

import os 
os.path.exists("F:\\python_machine_learing_work\\test")

在这里插入图片描述

os.path.isabs(path)

  • 功能:判断是否为绝对路径,是则返回 True,否返回 False。

举例:

import os 
os.path.isabs("F:\\python_machine_learing_work")

在这里插入图片描述

os.path.isfile(path)

  • 功能:判断路径是否为文件,是则返回 True,否返回 False。

举例:

import os 
os.path.isfile("F:\\python_machine_learing_work")

在这里插入图片描述

os.path.isdir(path)

  • 功能:判断路径是否为目录,是则返回 True,否返回 False。

举例:

import os 
os.path.isdir("F:\\python_machine_learing_work")

在这里插入图片描述


参考文章:
https://zhuanlan.zhihu.com/p/150835193
https://blog.donothing.site/2015/08/02/python-os/#os-path

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件设计模式——桥接模式

摘要 桥接模式(Bridge pattern): 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。 一、桥接模式的意图 将抽象与实现分离开来,使它们可以独立变化。 二、桥接模式的类图 Abstraction: 定义抽象类的接口Implementor: 定义实现类接口 …

C++标准模板(STL)- 输入/输出操纵符-(std::resetiosflags,std::setiosflags)

操纵符是令代码能以 operator<< 或 operator>> 控制输入/输出流的帮助函数。 不以参数调用的操纵符&#xff08;例如 std::cout << std::boolalpha; 或 std::cin >> std::hex; &#xff09;实现为接受到流的引用为其唯一参数的函数。 basic_ostream::…

【计算机视觉】3.传统计算机视觉方法

传统计算机视觉方法 一、大纲图像分割人脸检测行人检测 二、图像分割基于阈值检测的方法基于边缘检测的方法基于区域的分割方法基于图论的分割方法 三、人脸检测四、行人检测五、SVM六、DPM 一、大纲 图像分割 基于阈值、基于边缘 基于区域、基于图论 人脸检测 Haar-like 特征…

渗透测试之——信息收集思路

请遵守网络安全法 渗透测试时要和客户定好时间再使用扫描器。 渗透测试切记不要渗透客户所给域名的同级域名&#xff0c;可以渗透所给域名的子域名。信息收集永远是渗透测试的第一步。 1. 测试目标 xiusafe.com 2. 域名与ip 渗透测试中IP比域名更适合做渗透&#xff1b; …

Elasticsearch 集群时的内部结构是怎样的?

Apache Lucene : Flush, Commit Elasticsearch 是一个基于 Apache Lucene 构建的搜索引擎。 它利用 Lucene 的倒排索引、查询处理和返回搜索结果等功能来执行搜索。 它还扩展了 Lucene 的功能&#xff0c;添加分布式处理功能以支持大型数据集的搜索。 让我们看一下 Apache Luc…

网络通信(套接字通信)(C/C++)

1.网络编程必知概念 1.广域网和局域网 广域网:又称外网、公网。是连接不同地区局域网或城域网进行计算机通信的远程公共网络。 局域网:在一定的通信范围内,有很个多计算机组成的私有网络就叫局域网。(这些计算机相互之间是可以通信的,但是不能直接访问外网(可以通过网线…

ElementUI -- Mock.js介绍和使用与首页导航栏左侧菜单搭建

1.1 mockjs介绍 Mock.js是一个用于生成随机数据和模拟接口请求的JavaScript库。它可以帮助开发人员在前端开发过程中模拟后端接口的返回数据&#xff0c;以便进行前端页面的开发和测试。 Mock.js有两个重要的特性风靡前端: 数据类型丰富 Mock.js提供了一套简单易用的API&#x…

FL Studio21编曲软件好不好用?值得下载吗

现在的编曲界&#xff0c;鱼龙混杂&#xff0c;很多垃圾软件都来滥竽充数&#xff0c;能入流的编曲软件真的是屈指可数。而编曲业的缺口却又如此之大&#xff0c;所以各类货色都想入行分一杯羹。然而没有实力注定就没有市场而FL Studio又是一款非常著名&#xff0c;实力超群的编…

CTF_BUUCTF_MIS解题_05大白

题目地址&#xff1a;BUUCTF在线评测 文件下载解压之后发现真是一个大白 但是这个大白越看越不对劲&#xff0c;怎么下半身给整没了呢&#xff1f; 随机考虑到图片高度的隐写&#xff0c;杀手锏winhex上场&#xff0c;高度改高一下看看 flag已出现&#xff1a;flag{He1l0_d4_…

面试打底稿③ 专业技能的第三部分

简历原文 抽查部分 基本了解RabbitMQ、Elasticsearch等微服务技术&#xff0c;对分布式事务、分布式缓存等有所学习&#xff1b;熟悉数据库的基本操作&#xff0c;写过C#与数据库交互的项目&#xff1b; 模拟问答 1.你是如何保障消息可靠性的 从消息生产者到交换机&#x…

C语言 数据类型

变量声明 格式&#xff08;变量类型变量名称&#xff09; 变量类型&#xff1a;整数类型&#xff08;int&#xff09;&#xff0c;浮点数类型&#xff08;float&#xff09; float类型可以存储带小数的数字。 用printf()打印变量&#xff0c;使用%d来处理整数值&#xff0c…

AI指令百科全书:1000条AI指令,一次性全给你!

这是一位&#xff0c;国外博主哈桑 整理的&#xff0c;1000条ChatGPT实用指令&#xff0c;涵盖目前几乎所有的&#xff0c;主流提示需求。 全文超过40000字。 我把它们翻译成更适合大家理解的「中文版Prompt」&#xff0c;并根据具体的内容&#xff0c;拆解成一二级目录&…

【C++STL基础入门】list交换、翻转,排序、合并和拼接操作

文章目录 前言一、交换list二、翻转list三、排序list四、合并list五、拼接list总结 前言 在C的标准模板库&#xff08;STL&#xff09;中&#xff0c;list是一个双向链表容器&#xff0c;提供了丰富的功能和操作。本文将介绍list容器在交换、翻转、排序、合并和拼接等方面的基…

Sip多按键对讲分机,洁净室专用对讲终端

Sip多按键对讲分机&#xff0c;洁净室专用对讲终端 嵌入式洁净室电话机广泛应用于手术室&#xff0c;实验室&#xff0c;制药厂车间&#xff0c;无尘车间等 环境要求高的场所&#xff0c;整机是SUS304不锈钢工艺&#xff0c;喇叭&#xff0c;按键&#xff0c;麦克风无间隙&…

三维模型3DTile格式轻量化顶点压缩主要技术方法分析

三维模型3DTile格式轻量化顶点压缩主要技术方法分析 三维模型顶点压缩是3DTile格式轻量化压缩的重要组成部分&#xff0c;能有效减小数据大小&#xff0c;提高数据处理效率。下面将详细分析几种主要的顶点压缩技术方法&#xff1a; 预测性编码&#xff1a;预测性编码也被称为差…

串口电平信号分析--一下看懂不同的串口通信信号

串口电平信号分析–一下看懂不同的串口通信信号

C#,数值计算——Primpolytest的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { public class Primpolytest { private int N { get; set; } 32; private int nfactors { get; set; } 5; private ulong[] factors { get; set; } private int[] t { get…

九日集训 LCR.190 加密运算

计算机安全专家正在开发一款高度安全的加密通信软件&#xff0c;需要在进行数据传输时对数据进行加密和解密操作。假定 dataA 和 dataB 分别为随机抽样的两次通信的数据量&#xff1a; 正数为发送量负数为接受量0 为数据遗失 请不使用四则运算符的情况下实现一个函数计算两次…

MySQL索引看这篇就够了

能简单说一下索引的分类吗&#xff1f; 例如从基本使用使用的角度来讲&#xff1a; 主键索引: InnoDB 主键是默认的索引&#xff0c;数据列不允许重复&#xff0c;不允许为 NULL&#xff0c;一个表只能有一个主键。唯一索引: 数据列不允许重复&#xff0c;允许为 NULL 值&…

Vue.js2+Cesium1.103.0 十二、绑定多个 DOM 弹窗,并跟随视角实时更新位置

Vue.js2Cesium1.103.0 十二、绑定多个 DOM 弹窗&#xff0c;并跟随视角实时更新位置 Demo 基于 element-ui 的 Message 封装一个自定义弹窗&#xff0c;添加到页面中&#xff0c;并实时更新位置。 <template><divid"cesium-container"style"width: 1…