2017-11-17 3 views
0

利用した名前の既存の配列に基づいて、ディレクトリ内のファイルの名前を変更する方法:私はフォルダ内のいくつかのビデオファイルを持っているのPython

vid-dummyName.mp4 
vid-dummyName (1).mp4 
vid-dummyName (2).mp4 
vid-dummyName (3).mp4 
vid-dummyName (4).mp4 
vid-dummyName (5).mp4 

としてダミーの名前を持つ(E //データ/ビデオ)あなたがすることができますしてください私はあなたが2つの以上のリストの間で1-1の対応が必要な場合は、zipはそれを行うための方法だろう

import os 

path = 'E:/Data/Video' 
files = os.listdir(path) 
i = 1 

names=['Not Dummy Video','Another Not Dummy Video','May be Dummy','Still Thinking','Give it a Name','Tomorrow'] 

for file in files: 
    os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.mp4')) 
+0

zip(ファイル、名前)でoldname、newnameを試してください:os.rename(os.path.join(path、 oldname)、os.path.join(パス、 '{} .mp4'.format(newname))) 'となります。これは、 'files'リストが' names'リストと同じ順序であることを前提としています。 – Abdou

+0

ありがとうございます。ここで 'zip'は何をしていますか? –

+0

['zip'](https://docs.python.org/3/library/functions.html#zip)は、同様にインデックスされた複数のイテラブルの要素を組み合わせた関数です。基本的に 'zip([1,2]、[3,4])'は '[(1,3)、(2,4)]を返します。そのリンクはより多くの情報を提供します。 – Abdou

答えて

0

のような出配列に基づいてそれらの名前を変更するためにはPythonを使用する方法を知っています。ご例えば

a = [1, 2, 3] 
b = ['a', 'b', 'c'] 

for i, j in zip(a, b): 
print(i, j) 

1 a 
2 b 
3 c 

files[i]がどのiためnames[i]に改名されるように、あなたは、一緒にzipfilesnamesに必要があると思います。

for i, j in zip(files, names): 
    os.rename(os.path.join(path, i), os.path.join(path, '{}.mp4'.format(j))) 

また、あなたは反復している間os.listdirからファイル名のインデックスを追跡し、namesリストにこれらの指標を提供するために、enumerateを使用することができます。

for i, name in enumerate(files): 
    os.rename(os.path.join(path, name), os.path.join(path, '{}.mp4'.format(names[i]))) 
0

import os 
path = "E:/Data/Video" 
files = os.listdir(path) 
saved_path = os.getcwd() 
for file_ in files: 
    os.rename(file_, file_+".mp4") 
を試してみてください
関連する問題