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


前言

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.walk(path)函数的区别,os.walk(path)列出给定目录中的所有目录、子目录和文件。

os.walk()函数返回一个生成器,该生成器创建一个值元组(current_path,current_path中的目录,current_path中的文件)

import os
os.listdir("F:\\python_test")

在这里插入图片描述

import os 
dirs=os.walk("F:\\python_test")
for dir in dirs:
	print(dir)

在这里插入图片描述

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[,path2[,…])

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

举例:

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")

在这里插入图片描述

四、实际应用

  • 举例1:判断目录是否存在,不存在则创建
import os 

dirs=".//test"

if not os.path.exists(dirs):
	os.makedir(dirs)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值