Python os.renames() 方法
在 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'
为了解决这种情况,我们可以:
- 用相同的名称重命名现有文件(通过 rename() 方法)。
- 如果文件已经存在,则将其删除(通过 remove() 方法)。
- 使用异常处理更改文件的目录。
示例代码: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 模块。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串