2017-05-24 12 views
0

ディレクトリ内のファイルの名前を変更しようとしていますが、新しい名前は元の名前にスペース+ "17-" +刻々と増えていく名前です。Python 2.7でバッチファイルの名前を変更

以下のコードは、ファイルを151から上に改名しているだけです。元の名前を保持し、テキスト「17-」と数字を追加するにはどうすればよいですか?

import os 
path = 'C:\Users\dcs\Desktop\Test direct' 
files = os.listdir(path) 
i = 151 

for file in files: 
    os.rename(os.path.join(path, file), os.path.join(path, str(i)+'.TIF')) 
    i = i+1 

答えて

1

単にその連結式を書いてください。私が正しくあなたの詳細を理解していれば、あなたの新しいループ本体は、これは、ファイルに「ABC 17-151.TIF」を「ABC」のファイルを変更します

new_name = file + " 17-" + str(i) + ".TIF" 
os.rename(os.path.join(path, file), 
      os.path.join(path, new_name)) 
i += 1 

だろう。次は「17〜152」などとなります。

手のひらを顔に当てる

fileは、ビルトインタイプです。ループインデックスを変更します。

for fname in files: 
    new_name = fname + " 17-" + str(i) + ".TIF" 
    os.rename(os.path.join(path, fname), new_name) 
    i += 1 
+0

'file'はまだ文字列ですか? 'rename'コマンドの直前で' print type(file) 'を試してみてください。私のPythonでは 'listdir'は文字列のリストを返します。 – Prune

+0

これは本当に奇妙です: 'file'はジェネリック*タイプ*ですか?私はあなたのコードでこれを再現することはできません。私のローカルディレクトリで自分のソリューションを試してみましたが、期待通りに動作し、変数タイプに ''を与えています。何のPython?同じコードを実行していることを確認するために、このコードをカット&ペーストして環境に戻しましたか?私がしたのはあなたのパスを "。"で置き換えることでした。 'rename'コマンドを無効にしてください。 – Prune

+0

'fname'は' for'文で定義されています。 – Prune

0

私は明らかにしません上記のプルーンの提案を、理解していれば、それは次のようになります。そのファイルは拡張子です取り除くためのもの最初の部分は、動作していないが

import os 
path = 'C:\Users\dcs\Desktop\Test direct' 
files = os.listdir(path) 
i = 151 

#The part that I want to strip the extensions from 
for file in files: 
    new_name = file[:-3] 

#The part that words correctly (thanks Prune) 
for fname in files: 
    new_name = fname + " 17-" + str(i) + ".TIF" 
    os.rename(os.path.join(path, fname), new_name) 
    i += 1 

関連する問題