Если я читаю эту строку за строкой, я думаю
Это удаляет все расширения .xlsx файла на диске
os.rename(filename, filename[:-5]) # Problem 1
Затем добавляет имя без расширения в список
renamed.append(filename[:-5])
и затем пытается соединить что-то а) со всем массивом и б) с файлом и его расширением, а не с двумя путями
os.path.join(renamed, '.xls') # Problem 2 and 3
Вы бы предпочли
newname = filename[:-5] # remove extension
newname = newname + ".xls" # add new extension
os.rename(filename, newname) # rename correctly
renamed.append( ... ) # Whatever name you want in the list
Также обратите внимание, что if filename.endswith(".Xlsx"):
может быть False
для всех файлов, заканчивающихся строчными буквами .xlsx
.
Вместо [:-5]
вы также можете воспользоваться помощью операционной системы:
import glob
import os
allFiles = glob.glob("c:/test/*.xlsx")
renamed = []
for filename in allFiles:
path, filename = os.path.split(filename)
basename, extension = os.path.splitext(filename)
if extension == ".xlsx":
destination = os.path.join(path, basename+".xls")
os.rename(filename, destination)
И только к сведению: если переименование является единственной целью программы, попробуйте ren *.xlsx *.xls
в командной строке Windows.