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

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

专栏导读

a50b69cc81bb4be29749f2dca96b2f56.png

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

f8d8821388dc41358195b24b9133d6b0.png

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:e_folder, folder)
    os.makedirs(folder_path)
    folder_path = os.path.join(bas

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


目录
相关文章
|
30天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
12天前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
15 2
|
1月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
51 1
Python实用记录(十三):python脚本打包exe文件并运行
|
28天前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
29天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
1月前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
41 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
1月前
|
Python
Python实用记录(十二):文件夹下所有文件重命名以及根据图片路径保存到新路径下保存
这篇文章介绍了如何使用Python脚本对TTK100_VOC数据集中的JPEGImages文件夹下的图片文件进行批量重命名,并将它们保存到指定的新路径。
32 0
|
4天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
4天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!