当前位置: 首页 > news >正文

Python个人学习笔记(16):模块(os)

四、os模块

主要用于文件夹处理

(一)文件夹相关

os.makedirs(‘dirname1/dirname2’) :创建文件夹目录,不能重复创建,用的多
代码:

os.makedirs('a/b/c')

结果:
在这里插入图片描述
os.removedirs(‘dirname1’):删除文件夹,目录必须是空的,不空会报错。彻底删除,不会留在回收站,一定要小心误删。

os.mkdir(‘dirname’):生成单级目录,用得少,不如前面的好用
os.mkdir(‘a/b/c’):在a/b中创建c,如果a/b没有,就会报错

os.rmdir(‘a/b/c’):在a/b中删去c,只删一层
实际应用中一般不删除文件夹

(二)文件相关

os.listdir:列出文件名
代码:

name = os.listdir('a')
print(name)

结果:

['1.txt', '2.txt', 'b']

坑:只能拿到当前一层,下一层是拿不到的

os.remove(‘a/2.txt’):删除一个文件
open(“a/2.txt”,mode=“w”):创建文件

os.rename(‘old’,‘new’):文件重命名

os.getcwd():获取当前python脚本工作的目录路径,相当于./
代码:

print(os.getcwd())

结果:

D:\PycharmProjects\樵夫老师Python零基础课程\4_模块

os.chdir(“dirname”):改变当前脚本工作目录,相当于cd

os.chdir('./a')
print(os.getcwd())

特殊情况下会用,方便在某个文件夹内进行文件操作,一般不用

os.system(“bash command”):运行shell命令

os.system(“dir”):调用命令,会出乱码,可以执行一条命令
os.popen(“dir”):调用命令,不乱码,可以执行一条命令

(三)路径相关

os.path.exists():判断一个路径是否存在

print(os.path.exists('a/b/3.txt'))

既能判断文件,也能判断文件夹

os.isdir(“a/b”):判断是否为文件夹

print(os.path.isdir("a/b"))

比exists判断的更精细,如果不存在,那么会得到False

os.path.isfile(“a/b”):判断是否为文件

print(os.path.isfile("a/b"))

os.path.abspath(“a/b”):得到a/b的绝对路径

os.path.split():切割路径为文件夹和文件
代码:

print(os.path.split(os.path.abspath("a/b/2.txt")))

结果:

('D:\\PycharmProjects\\樵夫老师Python零基础课程\\4_模块\\a\\b', '2.txt')

前面是文件夹,后面是文件

os.path.dirname():得到绝对路径中的文件夹
代码:

print(os.path.dirname(os.path.abspath("a/b/2.txt")))

结果:

D:\PycharmProjects\樵夫老师Python零基础课程\4_模块\a\b

os.path.basename():得到绝对路径中的文件
代码:

print(os.path.basename(os.path.abspath("a/b/2.txt")))

结果:

2.txt

os.path.join():拼接路径,自动使用不同系统的相应文件系统分隔符来拼接
代码:

r = os.path.join('a/b','c','d.txt')
print(r)

结果:

a/b\c\d.txt

os.path.getsize():获取文件大小
代码:

r = os.path.getsize('a/哈哈哈.txt')
print(r)

结果:

17

结果表示文件的字节数

(四)扩展:遍历文件夹中的内容

代码:

path = "a"
for name in os.listdir(path): # 得到a里面所有的文件名
    # 需要拼接路径
    new_path = os.path.join(path, name)
    if os.path.isdir(new_path):
        print('文件夹',name)
    else:
        print("普通文件",name)

结果:

普通文件 1.txt
普通文件 2.txt
文件夹 b
文件夹 c
文件夹 d
普通文件 哈哈哈.txt

如果是文件夹,那么这个代码应该重新执行一次,但没办法确定到底要套多少层
把这段代码写成函数就能处理了
代码:

def func(path):
    for name in os.listdir(path):
        new_path = os.path.join(path, name)
        if os.path.isdir(new_path):
            print('文件夹', name)
            func(new_path) # 递归循环,不需要确定循环层数,直到不存在文件夹为止
        else:
            print("普通文件", name)

func("a")

结果:

普通文件 1.txt
普通文件 2.txt
文件夹 b
普通文件 3.txt
文件夹 f
普通文件 ffff.txt
文件夹 c
文件夹 d
普通文件 222.txt
普通文件 333.txt
普通文件 哈哈哈.txt

结果看不出结构,加入缩进
代码:

def func(path,ceng):
    for name in os.listdir(path):
        new_path = os.path.join(path, name)
        if os.path.isdir(new_path):
            print(ceng*'\t','文件夹', name)
            func(new_path,ceng+1) # 递归循环,不需要确定循环层数,直到不存在文件夹为止
        else:
            print(ceng*'\t',"普通文件", name)

func("a",1)

结果:

	 普通文件 1.txt
	 普通文件 2.txt
	 文件夹 b
		 普通文件 3.txt
		 文件夹 f
			 普通文件 ffff.txt
	 文件夹 c
	 文件夹 d
		 普通文件 222.txt
		 普通文件 333.txt
	 普通文件 哈哈哈.txt

也可以用os.walk进行遍历,直接遍历文件夹中所有内容

(五)创建文件的正确流程

def creat_file(path, gai):
    # 先处理路径
    dirname = os.path.dirname(path)
    if not os.path.exists(dirname):
        os.makedirs(dirname)
    # 到此文件夹没问题了,然后考虑文件
    if os.path.exists(path):
        if gai:
            open(path, 'w').close()
        else:
            return # 文件已经存在,并且用户选择不覆盖
    else:
        open(path, 'w').close() # 创建文件

creat_file("张三丰/金花婆婆/呵呵.txt",True)

相关文章:

  • BGP路由协议【网络协议详解】--通俗易懂!
  • 1vscode开发工具搭建
  • 基于互联网地图批量获取地名的坐标,并转换坐标系
  • YOLO魔改之频率分割模块(FDM)
  • 爬虫案例-爬取某狗音乐
  • SAP 为开发者推出 Joule:AI 赋能 SAP 开发生态
  • 深入解析进程管理:创建、终止、等待与程序替换
  • Python功能完美的宝库——内置的强大“武器库”builtins
  • SpringBoot项目controller层接收对应格式请求的相关RequestMapping配置
  • 丝杆,同步轮,齿轮,链轮选型(精密版)
  • LLVM学习--外部项目
  • 第二章 Python 数据结构入门详解
  • 378_Python_python修改.xls表格,不改变表格原有样式,仅仅修改指定行、列的单元格内容
  • 数仓开发那些事(10)
  • 【亚马逊云科技】大模型选型实战(挑选和测评对比最适合业务的大模型)
  • 实测 Gemini 2.0 Flash 图像生成:多模态 AI 的创作力边界
  • 如何打造企业 DevOps 文化
  • 【初学者】数据结构与算法关系解析
  • 【杂记一】虚拟环境以及项目依赖
  • 一个成功的Git分支模型
  • 外交部回应西班牙未来外交战略:愿与之一道继续深化开放合作
  • 巴基斯坦军方:印度导弹袭击已造成至少3人死亡
  • 江西浮梁县县长张汉坤被查,此前已有4个月无公开活动
  • 宋涛就许历农逝世向其家属致唁电
  • 禅定佛的微笑,从樊锦诗提到过的那尊说起
  • 谢承祥已任自然资源部总工程师