使用os.rename时是否确实需要指定文件类型?

2024-05-12 23:17:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我第一次尝试使用操作系统模块一次重命名多个文件。但是,似乎我必须指定文件类型。否则,该文件将无法再打开。它变成这样:

It becomes like this

但是我可以在不指定文件类型的情况下执行此操作吗?我该怎么做

我当前的代码,当我没有指定它是

import os

option = input("\nRename files in current directory? Yes or no: ").lower()

if (option == "yes"):
    path = os.getcwd()
else:    
    path = os.chdir(input("\nEnter directory: "))
    
name = input("\nEnter new filename: ")

i = 0
for source in os.listdir(path):
    destination =name + str(i) 
    os.rename(source, destination)
    i += 1

谢谢你的帮助


Tags: 模块文件pathnameinsourceinputos
2条回答

这是关于文件扩展名的。Windows使用扩展名选择用于打开该文件的应用程序

如果没有扩展,Windows无法选择要使用的程序。但是,如果使用正确的程序打开文件,则不会出现任何问题

os.rename不关心扩展名(“文件类型”,如您所称),但Windows关心扩展名。如果没有扩展名,Windows就不知道该文件是什么

您可以在重命名之前提取文件的扩展名,并将其附加到新名称中

您可以使用os.path.splitext获取原始扩展名:

old_name, extension = os.path.splitext(old_filename)
new_filename = new_name + extension
os.rename(old_filename, new_filename)

就你而言:

for i, source in enumerate(os.listdir(path)):
    old_name, extension = os.path.splitext(source)
    destination = name + str(i) + extension
    os.rename(source, destination)

相关问题 更多 >