Python笔记--3 你用或者不用,os模块就在这里

os 模块

  • 简介:os module 主要提供系统操作的函数,来实现对文件、目录的处理操作。
  • 常用方法:
    • os.sep

      • join()
        • 功能:使用指定的连接符连接指定的字符序列
        • 用法:str.join(string) #str 为连接符,string为字符序列
        • 举例
          • “-”.join((“a”,“b”,“d”)) # 结果为 a-b-d (数据类型为字符串)
          • " ".join([‘a’,‘b’,‘d’]) # 结果为 a b d (数据类型为字符串)
          • 总结:str(连接符)可自己指定为"-"," "(空格)等that’s up to you; string(字符序列)可以为一个元组(包含几个字符或者字符串)或者一个列表(包含几个字符或者字符串),返回结果为一个字符串类型
      • os.sep
        • os.sep与其说时一个方法倒不如说其是一个属性更容易理解(我们知道一般x.a()的为函数,而x.a的为属性)
        • 功能: os.sep其实就是你电脑对应系统的连接符,比如说,Windows系统的连接符为’\’,Linux系统的连接符为’/’,所以使用os.sep,解释器会根据你的系统自动转换成与之对应的连接符。
        • 举例:
          • os.sep.join((‘a’,‘b’,‘d’)) #结果为 a\b\d(在Windows系统下的Python语句输出)
          • os.sep.join((‘a’,‘b’,‘d’)) #结果为 a/b/d (在Linux系统下的Python语句输出)
          • windows系统下为什么不直接使用’\’,而是使用os.sep呢?
            这是因为’\‘是我们常用的转义字符,例如’\n’表示换行,要想打印’\’,需要写’\‘才可以,比如你要写一个路径"a\b\d",使用os.sep可以防止自己写错路径。(当然你可能说我直接使用’\’.join((‘a’,‘b’,‘d’))不就可以了吗?哈哈,那你也要写成’\\’.join()才可以,除了和join()函数一起使用,你还有很多其他地方要使用到系统连接符,所以还是乖乖使用os.sep吧
        • 补充:
          这里还有一点要提一下,虽然Windows系统下os.sep的输出是"\",但是在Windows系统下,文件路径使用"/"也是可以的(至少在Python中是这样的)。比如说下面的一个方法需要传入一个参数path,可以这样写os.listdir(“a/b/c”),也可以写成os.listdir(“a\\b\\c”)
    • os.linesep

      • 功能:等价于换行符
      • 使用: 在Windows系统下类似于\n\r;Linux系统类似于\n
    • os.pathsep

      • 使用:在Windows下输出;,在Linux下输出:
    • os.name

      • 功能:同样可以看作是属性, 返回用户所使用的系统,例如print(os.name) # 返回的结果是nt(这是Windows系统下的返回结果),使用Linux系统的用户可以自己试一下。
    • os.getenv()

      • 功能: 获取一个环境变量的值
      • 使用:os.getenv(var_name,value) # var_name为环境变量名称,value是找不到对应的环境变量(var_name)时,返回value的值,default value==None
      • remember: get environment
      • 举例 (此处参考了link这个blog的部分内容)
        上面所说的环境变量指的是我们安装时配置环境变量的那个环境变量。包括用户的环境变量和系统环境变量,如下图
        在[用户]这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        从第三张和第四张图片可以得出以下信息:
        1、在用户环境变量和系统环境变量都可以作为参数var_name, 输出的值正是图中每个变量对应的值
        2、除了能在配置环境的那里找到的变量外还有一些没有出现但也会输出结果,比如systemroot,computername等
        3、变量书写形式不分大小写
        4、如果没有找到对应的环境变量,返回值为None或者你指定的返回值
    • os.putenv

      • 功能:增加(设置)新的环境变量
      • 使用:os.putenv(var_name, value)
      • 失效啦!!! 反正在我这是执行os.putenv(“a”, “b”)然后再执行print(os.getenv(“a”))输出结果还是None。查了一些资料是说,这个方法执行失败。
      • so 我们可以使用os.environ 这个属性来增加一个环境变量
        • 使用:os.environ[“var_name”] = value
        • 举例
import os
os.environ["heihei"] = "haha"
print(os.getenv("heihei"))		#输出结果如你所愿,haha
print(os.environ["heihei"]         #这个输出结果同上!

NOTE:
1)设置完新的环境变量之后,在其他文件里打印这个变量的值,也是可以正常输出的
2)这个环境变量在我的电脑(此电脑)那里打开的环境变量里是找不到的,至于我们新增加的环境变量到底保存在哪里,感兴趣的可以自己去查一些资料。

    • os.getcwd()
      • 功能:注意有括号,是函数。 返回你当前的工作目录的路径,比如说我当前的Python文件时os.test.py,那么执行print(os.getcwd())结果如下图
        在这里插入图片描述
        这里我的项目是Test_csdn, 我当前执行的文件是os_test(当前工作目录)
      • gess: getcwd也就是get current work directory (帮助记忆鸭,if you like)
    • os.curdir
      • 功能:返回当前工作目录
      • 使用 os.curdir(没有括号)
      • 举例: print(os.curdir) #输出:.
      • remember:current directory
    • os.pardir
      • 功能:返回当前目录的父目录
      • 使用:os.pardir(没有括号)
      • 举例:print(os.pardir) #输出:…
      • remember:parent directory
    • listdir()
      • 功能:返回指定目录下的的所有文件名和目录名
      • 使用:os.listdir(path)# path 为指定的目录路径
      • 举例
# 假设在路径"a\b\c"下有三个文件和一个目录
dirs = os.listdir("a/b/c")
#dirs = os.listdir("a\\b\\c")也可以
for _ in dirs:
	print(_)
'''
 输出为
 	file1_name
 	file2_name
 	file3_name
 	dir1_name(四个名称不一定按这个顺序)
'''

    • os.chdir()
      • 功能:改变当前工作目录
      • 使用:os.chdir(path) # 指定目标路径
      • 举例
# 假设当前工作目录为"a\b\c"
os.getcwd() #输出为 a\b\c
os.chdir("a\\b\\d")
os.getcwd()  #输出为 a\b\d
# ps:但是在你的Python文件原来在目录a\b\c下,执行,命令后文件并不会移动到目录a\b\d下面



  • 注意:虽然你正在操作的文件没有移动,但是现在你的工作目录确实改变了,如果你使用下面这个方法创建目录,那么新创建的文件夹会出现在你修改当前目录后的当前目录下面(假设你创建的目录是在这个层级)
    • os.makedirs(dirname, mode, exist_ok)
      • 功能:创建多级目录
      • 使用:os.makedirs(“a/b/c”,mode=0o777, exist_ok=False)
      • 参数
        • dirname: 要创建的目录名称,可以简单的传一个目录名,也可以写成层级目录的形式如"a/b/c",在创建目录c的时候,如果没有a/b,则会自动创建c之前的所有目录。
        • mode:数字权限,使用过Linux的应该会知道文件权限如何使用数字表示,这里就是那个意思。
        • exist_ok: bool (是否在目录存在时触发异常。如果exist_ok为False(默认值),则在目标目录已存在的情况下触发FileExistsError异常;如果exist_ok为True,则在目标目录已存在的情况下不会触发FileExistsError异常。)
      • 举例
        假设当前的目录情况如下图在这里插入图片描述
# now 是我们的当前工作目录
# 现在我们来创建两个目录
dirname1 = os.pardir+"\\"+"other"
os.makedirs(dirname1)
dirname2 = os.pardir+"other"		#这里没有连接符,所以会将os.pardir和other整合成一个字符串作为目录的名字
os.makedirs(dirname2)
os.makedirs("pw")	#默认实在当前工作目录下创建
# 主要提醒的就是不要忘记连接符
# 执行后的结果如下图

在这里插入图片描述

    • os.mkdir(path, mode)
      • 功能:创建单个目录
      • 使用:os.mkdir(“a/b/d”, mode = 0o777)
      • 区别:与os.makedirs()相比,os.mkdir()在创建目录时,比如path=“a\b\d”,os.mkdir只会创建目录d,也就是意味着必须确保“a\b"是已经存在的,否则在创建目录d时则会报错
    • os.removedirs(dirname)
      • 功能:递归删除目录
      • 使用:os.removedirs(“a\b\d”)
      • 举例:目录c为当前工作目录
        在这里插入图片描述
        os.removedirs(“a/A/b”) #首先判断b为空,然后删除,再判断A不为空,会报错
        os.removedirs(“C/d”) #判断d为空,删除,再判断C为空,删除。
    • os.rmdir(dirname)
      • 功能:删除单极目录
      • 使用:os.rmdir(“a”)
      • 举例(参照上图)
        os.rmdir(“b”) #判断b为空,删除
        os.rmdir(“c”) #判断不为空,报错
    • os.rename(old, new)
      • 功能:修改文件名称
      • 使用:old为文件的旧名称,new为文件的新名称
      • 举例:
        · 同一目录下有两个文件,现在在p.py文件中编写代码
import os
os.rename("./a.txt", "./b.txt")

在这里插入图片描述
运行代码之后的结果为
在这里插入图片描述

  • os.path.abspath(path)
    • 功能:返回文件的决定对路径
    • 举例:
import os
print(os.path.abspath("./b.txt")

输出:D:\oppo\untitled1\b.txt

  • os.path.split()
    • 功能:将路径中的文件名和目录名以元组的形式输出(dirName, fileName)
    • 举例:
import os
print(os.path.split(os.path.abspath("./b.txt")))

# 输出结果为('D:\\oppo\\untitled1', 'b.txt')
  • os.path.dirname()
    • 功能:返回路径中的目录部分
    • 举例
import os
print(os.path.dirname(os.path.abspath("./b.txt")))

# 输出: D:\oppo\untitled1
  • os.path.basename()
    • 功能: 返回路径中的文件名
    • 举例
import os
print(os.path.basename(os.path.abspath("b.txt")))

#输出 b.txt
  • s.path.exists(path)
    • 功能:判断路径指定的文件是否存在,若存在返回True,否则返回False
    • 举例:
import os
print(os.path.exists("./b.txt"))
print(os.path.exists("./a.txt"))

# 输出 True
#	   False
  • os.path.isabs(path)
    • 功能:判断是否是绝对路径
    • 举例
import os
print(os.path.isabs("./b.txt"))
print(os.path.isabs(os.path.abspath("./b.txt")))

# 输出结果
#False
#True

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值