Я пытаюсь написать программу, которая будет принимать имена файлов и переименовывать их, изменяя порядок слов. Он отлично работает для большинства файлов, но у меня есть несколько файлов с японскими символами в имени файла, для которого программа не работает. Я думаю, это потому, что он преобразует символы в вопросительные знаки (я проверил это с помощью печати), а затем не могу найти файл, потому что в нем есть японские символы, а не вопросительные знаки. Как я могу обойти это?Python преобразование японского ввода в вопросительные знаки
Редактировать: Да, я использую Windows.
Воспитание моего кода опубликовано ниже (я довольно новичок в этом, поэтому он может быть очень неэффективным и трудно читаемым).
import os
def Filenames(filelist):
filenames = []
for name in filelist:
name = name.split(".") #Take off file extension
filenames.append(name)
return filenames
def ReformatName(directory):
filelist = []
name = []
filelist = os.listdir(directory)
filenames = Filenames(filelist)
for doc in filenames: #Docs are in form "Date Name Subject DocName", want to turn into "Subject DocName Date"
doc1 = doc.split(" ")
date = doc1[0]
subject = doc1[2]
docname = doc1[3]
newdoc = "%s %s %s.docx" %(subject, docname, date)
doc = ".".join(doc)
os.rename(os.path.normpath(directory + os.sep + doc), os.path.normpath(directory + os.sep + newdoc))
Вы используете Windows? – Blender
Пожалуйста, покажите, какой код вы написали. – alecxe
Похоже, ваша программа небезопасна в юникоде, что обычно плохо. Может быть, если вы разместите какой-нибудь код, мы сможем помочь вам работать с не-ASCII-входом? – ubik