Мне действительно нужно указывать тип файла при использовании os.rename? - PullRequest
0 голосов
/ 11 июля 2020

Я впервые пытаюсь использовать модуль os для одновременного переименования нескольких файлов. Однако, похоже, мне нужно указать тип файла. В противном случае файл больше нельзя будет открыть. Получается так:

Становится вот так

Но можно ли это сделать без указания типа файла? Как мне это сделать?

Мой текущий код, если я не указываю, это

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

Спасибо за вашу помощь!

Ответы [ 2 ]

3 голосов
/ 11 июля 2020

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)
0 голосов
/ 11 июля 2020

Речь идет о расширении файла. Расширение используется Windows для выбора приложения, которое будет использоваться для открытия этого файла.

Без расширения Windows не может выбрать, какую программу использовать. Но если вы откроете файл правильной программой, у вас не будет никаких проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...