python中的os模块和shutil模块

news2024/9/22 10:08:34

目录

os

1. 获取当前脚本绝对路径

2.获得工作路径;

3.该路径文件和目录

4.walk,查看目录下所有的文件(含子孙文件)

5.创建文件夹

6.os.makedirs(path)

7.路径拼接

8. 获取当前文件的上级目录

9.判断路径是否存在

10.是否是文件夹

11.进程管理

12.删除空文件夹

13.删除文件

14.查看状态

15.删除非空文件

16.遍历文件

shutil

复制文件:

复制文件并保留元数据:

移动文件:

删除目录及其内容:

创建压缩包:

解压压缩包:

获取磁盘使用情况:


os

1. 获取当前脚本绝对路径

abs_path = os.path.abspath(__file__)
print(abs_path)

2.获得工作路径;

os.getcwd()

3.该路径文件和目录

data = os.listdir("/Users/wupeiqi/PycharmProjects/luffyCourse/day14/commons")
print(data)

4.walk,查看目录下所有的文件(含子孙文件)

import os
path = r"E:\桌面\计算机\全栈\django\django项目\untitled1"

for path,dirs,files in os.walk(path):
    print(path)
    print(dirs)
    print(files)
    print("")

5.创建文件夹

os.mkdir(path)

含义:传入一个path路径,创建单层(单个)文件夹;

注意:如果文件夹已经存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;

os.getcwd()
path1 = os.getcwd()+“\yan”
os.mkdir(path1)

6.os.makedirs(path)

含义:传入一个path路径,生成一个递归的文件夹;

注意:如果文件夹存在,就会报错。因此创建文件夹之前,需要使用os.path.exists(path)函数判断文件夹是否存在;

path = os.path.join(path1, 'xx', 'oo', 'uuuu')
if not os.path.exists(path):
    os.makedirs(path)

7.路径拼接

p1 = os.path.join(base_path, 'xx')
print(p1)

p2 = os.path.join(base_path, 'xx', 'oo', 'a1.png')
print(p2)

8. 获取当前文件的上级目录

base_path = os.path.dirname( os.path.dirname(路径) )
print(base_path)

9.判断路径是否存在

exists = os.path.exists(p1)
print(exists)

10.是否是文件夹

file_path = os.path.join(base_path, 'xx', 'oo', 'uuuu.png')
is_dir = os.path.isdir(file_path)
print(is_dir) # False

folder_path = os.path.join(base_path, 'xx', 'oo', 'uuuu')
is_dir = os.path.isdir(folder_path)
print(is_dir) # True

11.进程管理

os.system(command): 运行 shell 命令并返回命令的退出状态码。

os.startfile(path[, operation]): 在 Windows 上,此函数可以打开文件或运行程序。

python复制
# 运行 shell 命令
exit_code = os.system('echo Hello, World!')

# 在 Windows 上打开一个文件
os.startfile('C:\\path\\to\\file.txt')

12.删除空文件夹

os.rmdir(folder_path)

# 删除空文件夹
folder_path = 'empty_folder'
try:
    os.rmdir(folder_path)
    print(f"文件夹 {folder_path} 已被删除。")
except OSError as e:
    print(f"删除空文件夹时出错: {e}")

13.删除文件

import os


# 删除文件
file_path = 'example.txt'
try:
    os.remove(file_path)  # 或者使用 os.unlink(file_path)
    print(f"文件 {file_path} 已被删除。")
except OSError as e:
    print(f"删除文件时出错: {e}")

14.查看状态

import os

    # 使用双反斜杠避免路径中的转义问题
    stat_info = os.stat('E:\\桌面\\计算机\\全栈\\django\\django项目\\untitled1\\ll.py')
    print(stat_info)

15.删除非空文件

# 删除非空文件夹
non_empty_folder_path = 'non_empty_folder'
try:
    shutil.rmtree(non_empty_folder_path)
    print(f"非空文件夹 {non_empty_folder_path} 已被删除。")
except OSError as e:
    print(f"删除非空文件夹时出错: {e}")

16.遍历文件

data = os.walk("/Users/wupeiqi/Documents")
for path, folder_list, file_list in data:
    for file_name in file_list:
        file_abs_path = os.path.join(path, file_name)
        ext = file_abs_path.rsplit(".",1)[-1]
        if ext == "mp4":
            print(file_abs_path)

里面涉及到了shutil模块,我们下面细讲

shutil

  1. 复制文件

python复制
import shutil

# 将文件 'example.txt' 复制到当前目录
shutil.copy('example.txt', '.')

  1. 复制文件并保留元数据

python复制
import shutil

# 将文件 'example.txt' 复制到 'copy_example.txt',并保留元数据
shutil.copy2('example.txt', 'copy_example.txt')

  1. 移动文件

python复制
import shutil

# 将文件 'example.txt' 移动到 'new_folder' 目录
shutil.move('example.txt', 'new_folder/example.txt')

  1. 删除目录及其内容

python复制
import shutil

# 删除 'old_folder' 目录及其所有内容
shutil.rmtree('old_folder')

  1. 创建压缩包

python
import shutil

# 创建一个名为 'archive.zip' 的压缩包,包含 'folder_to_zip' 目录的内容
shutil.make_archive('archive', 'zip', 'folder_to_zip')
  1. 解压压缩包

python
import shutil

# 解压 'archive.zip' 到当前目录
shutil.unpack_archive('archive.zip', '.')
  1. 获取磁盘使用情况

python复制
import shutil

# 获取当前目录的磁盘使用情况
usage = shutil.disk_usage('.')
print(f"Total: {usage.total}, Used: {usage.used}, Free: {usage.free}")

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

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

相关文章

linux系统查看父子进程

① 查找特定进程的父进程 ps -o pid,ppid,cmd -p 1234 查找进程 PID 为 1234 的父进程 ② 显示所有进程的树状结构 pstree ③ 显示特定进程及其父进程的树状结构 pstree -s 1234 ④ 启动 top 后,按下 c 键可以查看完整命令,按下 f 键进入字段管理界面…

Java | Leetcode Java题解之第233题数字1的个数

题目: 题解: class Solution {public int countDigitOne(int n) {// mulk 表示 10^k// 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)// 但为了让代码看起来更加直观,这里保留了 klong mu…

载波相位定位原理

在现代定位系统中,载波相位测距技术因其高精度而备受青睐。本文将探讨其工作原理,以及如何通过数学模型和算法来校正测量中的误差。 载波相位测距模型 载波相位测距是基于接收卫星发射的载波信号相位变化来进行距离测量的技术。它利用了信号传输过程中…

springboot系列教程(二):Log4j2日志信息(含源码)

一、Log4j2日志简介 日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。 1、Log4j2特点 核心特点 相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能…

攻防世界 level3

这道题把附件下载下来发现一个libc(动态链接库),那这道题估计需要利用libc来确定elf中函数的地址 国际惯例checksec,发现level3没开栈溢出保护和地址随机化,libc全开 拖入32位ida,没发现留后门和system函数,只有个writ…

SCI一区级 | Matlab实现GJO-CNN-LSTM-Multihead-Attention多变量时间序列预测

SCI一区级 | Matlab实现GJO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测 目录 SCI一区级 | Matlab实现GJO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GJO-CNN-LSTM-Mutilhead-Attention金豺优化算…

OrangePi AIpro在安防领域的深思和实战(旷视科技CNN模型ShuffleNetV1开发案例测试)

一、前言 公司最近有个项目是安防领域的,主要用在边缘结点,虽然已做成形,但是还是存在一些缺陷,例如:算力问题,开发板的成熟问题,已经各种技术的解决方案落地问题。目前我们集成了很多功能&…

在家上网IP地址是固定的吗?

在数字化时代,互联网已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都离不开网络的支持。然而,当我们在家中接入互联网时,可能会产生这样一个疑问:在家上网IP地址是固定的吗?下面一…

春招冲刺百题计划|双指针

Java基础复习 Java数组的声明与初始化Java ArrayListJava HashMapJava String 类Java LinkedListJava Deque继承LinkedListJava SetJava 队列优先队列:第二题用到了Java数组划分Java数组转ArrayListString 转数字String 这一部分,代码随想录写得超级好&#xff01…

哪些场景下适合使用人工智能作词软件来写歌词

以下是一些适合使用人工智能作词软件的场景: 软件我们选用“妙笔生词”智能写歌词软件(veve299)来操作。 1.创作灵感枯竭时:当创作者陷入思维困境,找不到新的创意和方向,人工智能作词软件可以快速提供一些…

Learning vtkjs之hello vtk

学习vtkjs 最近由于工作需要,开始学习vtkjs的相关内容,发现其实在医疗和工业领域,这个vtk的库的example还是非常有帮助,但是实际用的一些开发工具,或者研发生态却没有three的好,也就是能抄写的东西不多&am…

PanTools v1.0.27 多网盘批量管理、遍历分享、转存、重命名、复制...

一款针对多个热门网盘的文件管理、批量分享、批量转存、批量重命名、批量复制、批量链接检测、跨账号移动文件、多账号文件搜索等,支持不同网盘的不同账号的资源文件操作。适用于网站站长、资源爱好者、网盘拉新等,对于管理名下具有多个网盘多个账号具有…

昇思25天学习打卡营第20天|CycleGAN图像风格迁移互换

模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络,来自论文 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 。该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。…

3D问界-深入理解骨骼绑定与蒙皮绑定在三维动画中的角色

问题提出:什么是蒙皮绑定,什么是骨骼绑定 蒙皮绑定(Skinning)和骨骼绑定(Bone Binding)通常是在计算机图形学和动画制作中使用的术语,用来描述将模型或角色的几何形状与骨骼系统相关联的过程。这…

层序遍历及其应用

我们先看一道问题,将一棵树按照层序遍历将他列出来,如下图所示: 我们想一下,按照层序遍历的顺序应该是 1243567 。按照这个设想,我给大家讲解一下这个整体过程。 层序遍历介绍 层序遍历就是将树放入队列中&#x…

springboot社区垃圾回收处理小程序-计算机毕业设计源码71905

摘要 在数字化高速发展的今天,随着Spring Boot等轻量级框架的广泛应用,各种小程序、微服务如雨后春笋般涌现,极大地丰富了我们的软件生态系统。然而,伴随着这些应用的迅速增加,垃圾回收处理成为了一个不可忽视的问题。…

TensorFlow系列:第四讲:MobileNetV2实战

一. 加载数据集 编写工具类,实现数据集的加载 import keras""" 加载数据集工具类 """class DatasetLoader:def __init__(self, path_url, image_size(224, 224), batch_size32, class_modecategorical):self.path_url path_urlself…

PostgreSQL日志文件配置,记录所有操作记录

为了更详细的记录PostgreSQL 的运行日志,我们一般需要修改PostgreSQL 默认的配置文件,这里整理了一些常用的配置 修改配置文件 打开 PostgreSQL 配置文件 postgresql.conf。该文件通常位于 PostgreSQL 安装目录下的 data 文件夹中。 找到并修改以下配…

1.10-改进CBOW模型的学习

文章目录 0引言1 cupy包的安装2解决VScode中matplotlib绘图不显示的问题3 CBOW模型学习的实现4 CBOW模型对更复杂模式的捕捉5单词向量的评价方法6总结 0引言 本节将前面实现的改进的CBOW模型在PTB数据集上跑一遍由于希望跟书上一样调用GPU,因此需要安装cupy包&…

前端Canvas入门——一些注意事项

创建渐变的三种方法: createLinearGradient() - 线性渐变 createRadialGradient() - 径向渐变(放射性渐变) createConicGradient() - 锥形渐变 这三种的核心观点都是: 创建一个gradient对象,然后调用addColorStop()方法…