2016-05-31 10 views
0

まずはpythonで初心者です。 私はファイル(117個のファイル)の大部分を持って、私は自分の名前がUTF-8 .Hereていると思う1つのファイル名のサンプルです:複数のファイル名を変更する - pythonスクリプト

1|Ø¬Ø§ÙØ§ JAVA : ÙÙÙÙÙ Ø§ÙØ®ØµØ§Ø¦Øµ Attributes ÙÙ Ø§ÙØ¨Ø±Ùجة|R9Rku3z63uI.mp4 

私は次のPythonスクリプトを作ったように、これらのファイル名を変更したい:

# -*- coding: utf-8 -*- 
import os 

names = "مقدمة الدورة و \n مفهوم الكائنات في البرمجة\nمفهوم الخصائص Attributes في البرمجة............" 
i = 0 
for r,dirs,files in os.walk('/media/sdd3vil/SDDEvilOthers/Programming/Java/java101/'): 
    files.sort() 
    fa = '\n'.join(files) 
    fc = fa.split('\n') 
while i < 118 : 
    os.rename(fc[i], names[i]) 
    print "%s Changed To %s" % (f3, names[i]) 
    i +=1 
    continue 

「名前」変数には、元のファイル名で置き換えたい名前が含まれています。 しかし、私は次の例外を得た:

Traceback (most recent call last): 
    File "Re.py", line 20, in <module> 
     os.rename(fc[i], names[i]) 
OSError: [Errno 2] No such file or directory 

誰もが問題があると私たちに解決を与えているものを説明することができます。おかげさまで

答えて

0

あなた変数だけでなく文字列のリスト、そう名[i]ははそれでちょうどi番目の文字です。リストとして初期化するか、使用する前にsplit()します。

あなたのコードがあなたが思っているとおりに動作しないときは、通常、あなたの変数にあなたの考えが含まれていないので、変数の値を出力するエラーの直前にprintステートメントを追加するのが最初の反射です。 ..(または、あなたの第2のコードレビューはそのような問題を見つけることができるので)

+0

私は "print"ステートメントを使用し、私は必要な結果を得たので、私は問題のインデックスを持っていません。関数は、ファイル名を変更します。私は "mv"端末でファイル名を変更しようとしましたが、UTF-8形式のファイル名がバイナリ形式に変更されたので問題が発生しました。 "mv" 。 – SDDEvil

関連する問題