ファイル名を取り、単語の順序を変更して名前を変更するプログラムを作成しようとしています。ほとんどのファイルで正常に動作しますが、プログラムが動作しないファイル名に日本語の文字が含まれるファイルがいくつかあります。これは、文字を疑問符に変換し(印刷で確認しました)、ファイルに疑問符ではなく日本語の文字が含まれているため、ファイルが見つからないためだと思います。どうすればこれを回避できますか?
編集: はい、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))