迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python os.renames() 方法

作者:迹忆客 最近更新:2023/04/21 浏览次数:

在 Python 标准实用程序模块下,我们有 os 模块来与操作系统交互。

本文讨论用于重命名递归目录或文件的 os.renames() 方法。 此方法在行为上与 os.rename() 方法非常相似,后者的作用相同,只是它还创建了中间目录,这些目录需要生成完整路径名。

这个过程首先由更改文件名之前的方法完成。 此 os.renames() 方法不仅更改原始文件的名称,而且使用 os.removedirs() 方法删除以前的(原始)文件。

Python os.renames() 方法的语法

os.renames(new, old)

参数

  • old 它接受一个类似路径的对象,并显示要重命名的文件或目录的原始名称
  • new 它接受一个类似路径的对象并指示文件或目录的新名称。 该参数还可以包括当前系统文件中不存在的目录

返回值

此方法不返回任何内容。 相反,它会更改文件或目录的名称。


示例代码:使用 os.renames() 方法

为了演示 os.renames() 方法的概念,下面的源代码显示了 source_path 目录中的所有文件。

# importing os module to interact with os methods
import os
# source path to find the file
source_path = 'C:/Users/lenovo/Downloads'
# change the directory
os.chdir(source_path)
print("Old file or directory name: ", os.listdir(os.getcwd()))

# to rename a file
os.renames('dictionary.txt', 'new_name.txt')
# show newly renamed file
print("Renamed file and directory: ", os.listdir(os.getcwd()))

# to rename a directory
os.renames(source_path + "/remove", source_path + "/create")
print("Folder is successfully renamed")

输出:

Old file or directory name: ['image.jpg', 'slides.pptx', 'dictionary.txt', 'MyApplication.zip']
Renamed file and directory: ['image.jpg', 'slides.pptx', 'new_name.txt', 'MyApplication.zip']
Folder is successfully renamed

示例代码:os.renames() 方法中的 FileNotFoundException

在 os.renames() 方法中,如果旧参数不是有效文件或目录。 然后,os.renames() 在控制台中返回异常 FileNotFoundException。

import os
source_path = 'C:/Users/lenovo/Downloads/'
# if the file or directory does not exist
os.renames(source_path +'dictionary.txt', 'new_name.txt')

print("Renamed file or directory: ", os.listdir(os.getcwd()))

输出:

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'C:/Users/lenovo/Downloads/dictionary.txt' -> 'new_name.txt'

示例代码:使用 os.renames() 方法重命名指定文件并移动到新目录

如果要重命名文件并将其移动到新目录,您仍然可以使用 os.renames() 方法。 os.renames() 方法中的新参数可以仅采用文件名或目录和文件名。

如果新目录无效或不存在,该方法将创建一个具有指定名称的新目录,不会出现任何错误异常。

import os
source_path = 'C:/Users/lenovo/Downloads/'
os.chdir(source_path)
print("Old file or directory name: ", os.listdir(os.getcwd()))
# rename the file and move to a new directory
os.renames('dictionary.txt', 'remove/new_name.txt')
print("File is renamed, and directory is created successfully.")

输出:

File is renamed, and directory is created successfully.

示例代码:使用 os.renames() 方法时出现 FileExistsError 异常

正如我们所讨论的,os.renames() 方法使用两个参数,后者用于重命名指定的文件。 当已存在与提供的重命名文件同名的文件时,将发生异常 FileExistsError。

该方法返回异常但不覆盖同一文件。 下面的示例显示了此类异常是如何发生的以及如何处理它。

import os
source_path = 'C:/Users/lenovo/Downloads/'
os.chdir(source_path)
# if new_name.txt already exist in specified source_path
os.renames('dictionary.txt', 'new_name.txt')
print(os.listdir(os.getcwd()))
print("File renamed successfully.")

输出:

FileExistsError: [WinError 183] Cannot create a file when that file already exists: 'dictionary.txt' -> 'new_name.txt'

为了解决这种情况,我们可以:

  1. 用相同的名称重命名现有文件(通过 rename() 方法)。
  2. 如果文件已经存在,则将其删除(通过 remove() 方法)。
  3. 使用异常处理更改文件的目录。

示例代码:os.renames() 与 shutil.move() 方法

当源路径和目标路径位于不同的系统驱动器上时,os 模块可能会失败。 os.renames() 方法返回 OSError 异常,表明系统无法移动文件,而 shutil.move() 方法检查源路径和目标路径是否在不同的驱动器上。

如果目标路径不同,该方法确保将文件复制到另一个驱动器并将其从原始位置删除。 因此,证明 os.renames() 方法适用于低级函数,而 shutil.move() 方法适用于更高级别的函数。

import os
# import for using move() method
import shutil
# check the difference here
shutil.move("C:/Users/lenovo/Downloads/dictionary.txt", "E:/")
print("shutil.move method works successfully")
os.rename("C:/Users/lenovo/Downloads/dictionary1.txt", "E:/")
print("os.rename method works successfully")

输出:

# program works fine for shutil.move() method
shutil.move method works successfully

# program throws exception on os.renames() method
OSError: [WinError 17] The system cannot move the file to a different disk drive: 'C:/Users/lenovo/Downloads/dictionary1.txt' -> 'E:/'

无效的跨设备链接异常错误

有时,当使用 os.renames() 方法并以不同方式定义源路径和目标路径时,用户可能会面临不同的异常,例如,无效的跨设备链接。

要解决此异常,我们需要使用上面建议的 shutil 模块内部的 move() 方法。 当我们想在不同的系统驱动器中工作时,不鼓励使用 os 模块。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便