サブディレクトリ内に格納されているいくつかのファイルの名前を、ベース名の最後の4文字を削除して変更しようとしています。os.walk()を使ってファイルの名前を変更する方法は?
import glob, os
for file in glob.glob("C:/Users/username/Desktop/Original data/" + "*.*"):
pieces = list(os.path.splitext(file))
pieces[0] = pieces[0][:-4]
newFile = "".join(pieces)
os.rename(file,newFile)
しかし、今、私はすべてのサブディレクトリに上記を繰り返したいの:私は通常使用して1つのディレクトリ内のファイルを検索し、名前を変更するglob.glob()
を使用しています。私はos.walk()
を使用してみました:
import os
for subdir, dirs, files in os.walk("C:/Users/username/Desktop/Original data/"):
for file in files:
pieces = list(os.path.splitext(file))
pieces[0] = pieces[0][:-4]
newFile = "".join(pieces)
# print "Original filename: " + file, " || New filename: " + newFile
os.rename(file,newFile)
print
文が正しく元と私は探しています新しいファイル名を出力しますが、次のエラーがos.rename(file,newFile)
返します
Traceback (most recent call last):
File "<input>", line 7, in <module>
WindowsError: [Error 2] The system cannot find the file specified
どのように私はこの問題を解決することができ?
:
os.walk
によって返さtuple
の最初の項目は、現在のパスがこれだけのファイル名を指定して、それを組み合わせることos.path.join
を使用しています歩くと同じディレクトリに... –@RafaelRodrigoDeSouza - ありがとう、あなたはniemmiの答えで説明されている通りです=) – Joseph