2017-06-13 14 views
0

リストを使用してディレクトリ内のファイルの名前を変更しようとしています。今までの私のコードでは、FileNotFoundErrorを与える前に最初のファイルの名前を変更するだけです。リストを読み込んでファイル名を同じ順序で変更するにはどうすればよいですか?リストに従ってファイルの名前を変更する

import os 
import glob 

fileLib = ('/filepath1/') 
ref = ('/filepath2/ref.csv') 

for file in glob.glob(os.path.join(fileLib, '*.csv')): 
    with open(ref) as list1: 
     line = list1.read().split(',\n') 
     for name in line: 
      os.rename(file, os.path.join(fileLib, '{}.csv'.format(name))) 

答えて

0

ループがネストされているため、同じファイルに名前を変更しています。

最初に動作し、次に名前が変更されたファイルの名前を変更しようとしたときです。

コードを再編成します。単一のループと一緒に

fileLib = '/filepath1/' 
ref = '/filepath2/ref.csv' 

with open(ref) as list1: 
    newnames = list1.read().split(',\n') 

その後、zipディレクトリの内容と新しい名前のリスト:まず、新しい名前のファイルを読み込む

for file,newname in zip(glob.glob(os.path.join(fileLib, '*.csv')),newnames): 
    os.rename(file, os.path.join(fileLib, '{}.csv'.format(newname))) 

zip以来停止を反復可能なパラメータの一つがなくなったとき、場合globの結果が新しい名前リストよりも長い場合、名前の変更は部分的にのみ行われるため、名前変更する前に両方のリストのサイズが同じであることを確認することをお勧めします。

+0

私はファスナーに私を紹介していただきありがとうございます、私はそれが動作するようにそれを注文する方法を以前把握できませんでしたが、これはうまく動作します。 – Appelynn

関連する問題