【100天精通python】Day21:文件及目录操作_文件的权限处理和批量处理

news2024/11/24 22:26:31

目录

专栏导读 

1. 文件的权限处理

1.1 查询文件权限

1.2 修改文件权限

2 文件的批量处理

2.1 使用os模块和os.listdir()函数

 2.2 使用glob模块

2.3 使用shutil模块

2.3.1 批量复制文件

 2.3.2 批量移动文件

2.3.3 批量删除文件

2.3.4 批量创建目录


专栏导读 

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html


1. 文件的权限处理

在Python中,可以使用内置的os模块来进行文件的权限操作。os模块提供了一系列函数,用于查询和修改文件的权限和其他属性。以下是一些常见的文件权限操作:

1.1 查询文件权限

         可以使用os.access()函数来检查文件的访问权限。这个函数可以检查文件是否具有指定的访问权限(读、写或执行)。

import os

file_path = 'example.txt'

# 检查文件是否可读
if os.access(file_path, os.R_OK):
    print("文件可读")
else:
    print("文件不可读")

# 检查文件是否可写
if os.access(file_path, os.W_OK):
    print("文件可写")
else:
    print("文件不可写")

# 检查文件是否可执行
if os.access(file_path, os.X_OK):
    print("文件可执行")
else:
    print("文件不可执行")

1.2 修改文件权限

        可以使用os.chmod()函数来修改文件的权限。该函数可以为文件设置新的权限模式。

        在Python中,文件的权限是指决定谁可以对文件进行读取、写入和执行操作的规则。文件权限通常用三个八进制数字表示,每个数字对应一个用户类别:文件所有者、所属组和其他用户。每个数字又由三位二进制数组成,表示对应用户类别的读(r)、写(w)和执行(x)权限。

        以下是文件权限表示的示例:

  • 0o400:文件所有者有读权限,其他用户没有任何权限。
  • 0o600:文件所有者有读写权限,其他用户没有任何权限。
  • 0o644:文件所有者有读写权限,所属组和其他用户只有读权限。
  • 0o755:文件所有者有读写执行权限,所属组和其他用户有读执行权限。

        在Python中,可以使用os模块来查询和修改文件的权限。前面已经介绍了如何使用os.access()函数查询文件的权限,以及使用os.chmod()函数修改文件的权限。

        需要注意的是,修改文件权限可能需要管理员权限或文件的拥有者权限。在操作文件权限时,要小心确保不会导致不必要的安全风险。

import os

file_path = 'example.txt'

# 设置文件为只读权限
os.chmod(file_path, 0o444)

# 设置文件为可写权限
os.chmod(file_path, 0o666)

# 设置文件为可执行权限
os.chmod(file_path, 0o755)

2 文件的批量处理

        在Python中,文件的批量处理是指对多个文件进行相同或类似操作的过程。这在实际应用中非常常见,例如批量重命名文件、批量复制、批量删除等。Python提供了多种方法来实现文件的批量处理,下面将详细介绍其中的几种方法,并提供示例代码。

2.1 使用os模块和os.listdir()函数

        这是一种简单的方法,通过os.listdir()函数列出目录中的所有文件,然后使用循环对每个文件执行相应操作。

        示例1:批量重命名文件,将文件名中的".txt"后缀改为".csv" 

import os

folder_path = 'path/to/folder'

# 获取目录下所有文件列表
for filename in os.listdir(folder_path):
    # 判断文件名是否以".txt"结尾
    if filename.endswith('.txt'):
        # 将".txt"后缀改为".csv"
        new_filename = filename.replace('.txt', '.csv')
        # 重命名文件
        os.rename(os.path.join(folder_path, filename), os.path.join(folder_path, new_filename))

示例2 :批量重命名目标文件夹中的所有文件,将所有文件名中的"old_string"替换为"new_string"

import os

# 设置目标文件夹路径
folder_path = 'path/to/folder'

# 获取目标文件夹中的所有文件名
file_list = os.listdir(folder_path)

# 遍历文件列表,对每个文件名进行修改
for filename in file_list:
    # 在这里可以根据自己的需求定义重命名的规则
    # 示例:将所有文件名中的"old_string"替换为"new_string"
    new_filename = filename.replace("old_string", "new_string")

    # 构建原文件的完整路径和新文件的完整路径
    old_file_path = os.path.join(folder_path, filename)
    new_file_path = os.path.join(folder_path, new_filename)

    # 执行文件重命名操作
    os.rename(old_file_path, new_file_path)

print("文件批量重命名完成!")

 2.2 使用glob模块

  glob模块是Python标准库中提供的用于查找文件路径名匹配的工具。它支持使用通配符模式来匹配文件和目录的名称,让我们能够更方便地进行文件路径的筛选和查找。glob模块通常与os模块一起使用,能够快速方便地获取匹配的文件路径。

        主要的glob模块函数是glob.glob(),它接受一个模式字符串作为参数,并返回所有与模式匹配的文件路径名的列表。模式字符串可以包含特殊字符(通配符)来匹配文件名中的部分内容。

        示例1:批量删除指定文件夹下所有名字包含"temp_"前缀的文件

import glob
import os

folder_path = 'path/to/folder'

# 使用通配符匹配文件名,删除所有名字包含"temp_"前缀的文件
for file_path in glob.glob(os.path.join(folder_path, 'temp_*')):
    os.remove(file_path)

        示例2:查找当前目录下所有以.txt结尾的文件

import glob

txt_files = glob.glob('*.txt')
print(txt_files)

        示例3:查找指定目录下所有以.jpg结尾的图片文件

import glob

folder_path = 'path/to/folder'
jpg_files = glob.glob(folder_path + '/*.jpg')
print(jpg_files)

            示例4:使用通配符来查找文件

import glob

# 查找所有以字母'a'开头、中间包含一个或多个任意字符、以字母'b'结尾的文件
files = glob.glob('a*b')
print(files)

          示例5: 查找多级目录下的文件

import glob

# 查找所有子目录下以'.txt'结尾的文件
all_txt_files = glob.glob('path/to/folder/**/*.txt', recursive=True)
print(all_txt_files)

2.3 使用shutil模块

  shutil模块提供了更高级的文件和目录操作功能,可以方便地进行文件的复制、移动等批量处理操作。

2.3.1 批量复制文件

         使用shutil.copy()函数可以实现文件的批量复制。

         示例1:批量复制所有的".txt"文件到另一个目录。

import os
import shutil

source_folder = 'path/to/source_folder'
destination_folder = 'path/to/destination_folder'

# 获取源文件夹下所有文件列表
for filename in os.listdir(source_folder):
    # 判断文件名是否以".txt"结尾
    if filename.endswith('.txt'):
        # 构建源文件和目标文件的路径
        source_file = os.path.join(source_folder, filename)
        destination_file = os.path.join(destination_folder, filename)
        # 复制文件
        shutil.copy(source_file, destination_file)
 2.3.2 批量移动文件

        使用shutil.move()函数可以实现文件的批量移动。

        示例:将指定目录下所有.txt文件移动到另一个目录

import os
import shutil

source_folder = 'path/to/source_folder'
destination_folder = 'path/to/destination_folder'

# 获取源文件夹下所有文件列表
for filename in os.listdir(source_folder):
    # 判断文件名是否以'.txt'结尾
    if filename.endswith('.txt'):
        # 构建源文件和目标文件的路径
        source_file = os.path.join(source_folder, filename)
        destination_file = os.path.join(destination_folder, filename)
        # 移动文件
        shutil.move(source_file, destination_file)
2.3.3 批量删除文件

        使用os.remove()函数可以实现文件的批量删除。

        示例:删除指定目录下所有以.bak结尾的备份文件。

import os

folder_path = 'path/to/folder'

# 获取目录下所有文件列表
for filename in os.listdir(folder_path):
    # 判断文件名是否以'.bak'结尾
    if filename.endswith('.bak'):
        # 构建文件的完整路径
        file_path = os.path.join(folder_path, filename)
        # 删除文件
        os.remove(file_path)
2.3.4 批量创建目录

         使用os.makedirs()函数可以实现批量创建目录。

        示例:在指定目录下创建多级子目录。

import os

base_folder = 'path/to/base_folder'

# 创建多级子目录
subfolders = ['subfolder1', 'subfolder2', 'subfolder3']

for folder in subfolders:
    folder_path = os.path.join(base_folder, folder)
    os.makedirs(folder_path)

以上是三种常见的方法来实现文件的批量处理。根据具体的需求,您可以选择合适的方法来处理文件。请注意,在进行批量文件处理时,一定要小心谨慎,确保不会误操作或删除重要的文件。建议在进行批量处理操作前先备份文件,以免造成不可逆的损失。

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

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

相关文章

Python程序开发案例教程PDF,python程序开发案例教程

大家好,本文将围绕Python程序开发案例教程黑马程序员电子版书展开说明,Python程序开发案例教程黑马课后答案是一个很多人都想弄明白的事情,想搞清楚Python程序开发案例教程pdf黑马程序员需要先了解以下几个事情。 1、python软件开发的案例有哪…

多赛道出海案例,亚马逊云科技为企业提供全新解决方案实现高速增长

数字化浪潮之下,中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”,中国企业实现了从低端制造出口,向技术创新和品牌先导的升级。为助力中国企业业务高效出海,亚马逊云科技于2023年6月9日在深圳大中华喜来登酒店举办…

使用阿里云DataX完成数据同步

DataX DataX 是阿里云 DataWorks 数据集成的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, datab…

Unity-缓存池

一、.基础缓存池实现 继承的Singleton脚本为 public class Singleton<T> where T : new() {private static T _instance;public static T GetIstance(){if (_instance null)_instance new T();return _instance;} } 1.PoolManager using System.Collections; using S…

mac安装nacos,M1芯片

第一步&#xff0c;官网下载 》nacos官网 去github中下载对应的版本&#xff0c;本人下载的是1.4.1版本 在这儿选择其他的版本&#xff0c;下面这里选择 tar.gz 压缩包 解压后放到一个非中文的目录下&#xff0c;我选择在 user目录下面创建一个other目录&#xff0c;将使用的环…

python-网络爬虫.Request

Request python中requests库使用方法详解&#xff1a; 一简介&#xff1a; Requests 是Python语言编写&#xff0c;基于urllib&#xff0c; 采用Apache2 Licensed开源协议的 HTTP 库。 与urllib相比&#xff0c;Requests更加方便&#xff0c;处理URL资源特别流畅。 可以节约我…

慕课网Go-4.package、单元测试、并发编程

package 1_1_User.go package usertype User struct {Name string }1_1_UserGet.go package userfunc GetCourse(c User) string {return c.Name }1_1_UserMain.go package mainimport ("fmt"Userch03 "goproj/IMOOC/ch03/user"//别名&#xff0c;防止同名…

HarmonyOS/OpenHarmony元服务开发-配置卡片的配置文件

卡片相关的配置文件主要包含FormExtensionAbility的配置和卡片的配置两部分&#xff1a; 1.卡片需要在module.json5配置文件中的extensionAbilities标签下&#xff0c;配置FormExtensionAbility相关信息。FormExtensionAbility需要填写metadata元信息标签&#xff0c;其中键名称…

论文解读|2020 CVPR:PointASNL:基于自适应采样的非局部神经网络点云鲁棒处理

原创 | 文 BFT机器人 01 背景 点云是由大量的点组成的三维数据集&#xff0c;通常由激光雷达或摄像机等传感器采集。点云数据处理是计算机视觉和机器学习领域的重要研究方向&#xff0c;应用广泛&#xff0c;例如自动驾驶、机器人导航、三维建模等。然而&#xff0c;点云数据通…

CCIA数安委等组织发起“个人信息保护影响评估专题工作”,合合信息首批入选试点

近期&#xff0c;“个人信息保护影响评估专题工作”&#xff08;简称“PIA专题工作”&#xff09;试点评估结果正式发布。PIA专题工作组由中国电子技术标准化研究院、中国信息通信院等单位的法律与技术专家组成&#xff0c;对试点申报单位开展PIA工作的过程是否符合评估依据提出…

bigemap工程行业应用

类似这种看布置&#xff0c;修温室大棚&#xff0c;再就是把影像添加到cad里。落坐标点 是因为觉得地图影像清晰&#xff0c;更新及时能直接用软件做等高线地形图进行投影转换配合cad来使用直接在线下载卫星图和高程节省测绘时间&#xff0c;以及手机端去做数据的采集&#xff…

我为“IT教父”柳传志的名言画蛇添足

我为“IT教父”柳传志的名言画蛇添足 搭班子&#xff0c;定战略&#xff0c;带队伍 添两条足&#xff1a;配资源&#xff0c;拼打法 趣讲大白话&#xff1a;教父还是很牛&#xff0c;被恶意黑化了 【趣讲信息科技243期】 **************************** 搭班子&#xff1a;是一条…

Bootstrap框架(JavaScript组件)

目录 前言一&#xff0c;JavaScript插件简介二&#xff0c;插件的引入方式三&#xff0c;data属性四&#xff0c;关闭data属性五&#xff0c;过渡插件六&#xff0c;模态框6.1&#xff0c;JavaScript操作模态框6.2&#xff0c;模态框属性6.3&#xff0c;模态框方法6.4&#xff…

如何运行疑难解答程序来查找和修复Windows 10中的常见问题

如果Windows 10中出现问题&#xff0c;运行疑难解答可能会有所帮助。疑难解答人员可以为你找到并解决许多常见问题。 一、在控制面板中运行疑难解答 1、打开控制面板&#xff08;图标视图&#xff09;&#xff0c;然后单击“疑难解答”图标。 2、单击“疑难解答”中左上角的…

无涯教程-jQuery - position( )方法函数

position()方法获取元素相对于其偏移父级的顶部和左侧位置。 返回的对象包含两个Integer整数属性&#xff0c;即top和left。为了进行准确的计算&#xff0c;请确保将像素值用于边距&#xff0c;边框和填充。此方法仅适用于可见元素。 position( ) - 语法 selector.position(…

StopWatch与ThreadLocal

目录 1、StopWatch 1、1作用&#xff1a; 1、2方法&#xff1a; 1、3使用方法 2、ThreadLocal 2、1什么是ThreadLocal 2、2简单例子 2、3使用ThreadLocal带来的四个好处 2、4主要方法 2、5ThreadLocal内存泄漏问题 1、StopWatch 1、1作用&#xff1a; 统计代码块耗时时…

【前端|CSS系列第4篇】面试官:你了解居中布局吗?

欢迎来到前端CSS系列的第4篇教程&#xff01;如果你正在寻找一种简单而又强大的前端技术&#xff0c;以使你的网页和应用程序看起来更加专业和美观&#xff0c;那么居中布局绝对是你不能错过的重要知识。 在前端开发中&#xff0c;实现居中布局是一项必备技能&#xff0c;无论…

DC电源模块输出电压的调节范围

BOSHIDA DC电源模块输出电压的调节范围 DC电源模块是一种可以将交流电转换为直流电的设备&#xff0c;可以广泛应用于电子、通信、工业自动化等领域。在实际使用中&#xff0c;输出电压的调节范围非常重要&#xff0c;因为它决定了该模块能够适应的电器设备的种类和使用范围。…

(自控原理)自动控制的一般概念

1、自动控制理论发展简史 1.1经典控制理论&#xff08;19世纪初—20世纪50年代) 时域法 复域法(根轨迹法) 频域法 1.2 现代控制理论&#xff08;20世纪60年代—&#xff09; 线性系统 自适应控制预测控制 最优控制 鲁棒控制 滑模控制 最佳估计 容错控制 大系统复杂系统 系…

golang自带的命令行解析库flag库实践

1. 简介 flag用于解析命令行选项。有过类 Unix 系统使用经验的童鞋对命令行选项应该不陌生。例如命令ls -al列出当前目录下所有文件和目录的详细信息&#xff0c;其中-al就是命令行选项。 命令行选项在实际开发中很常用&#xff0c;特别是在写工具的时候。 指定配置文件的路径…