2016-11-03 7 views
2

入力引数からフォルダ名を取得するPythonプログラムを作成し、その末尾に「_ {n}」を追加してすべてのファイルの名前を変更しますそのファイルのシリアル番号です。たとえば、 "images/cat.jpg"、 "images/dog.jpg"というフォルダがある場合、 "images/cat_1.jpg"、 "images/dog_2.jpg" 。最後にアクセスした日付に従ってファイルをソートします。私は部分的に以下のような問題を試してみました: -Pythonを使用してディレクトリ内のすべてのファイルの名前を変更します

import os 
from os import rename 
from os.path import basename 

path = os.getcwd() 
filenames =next(os.walk(path))[2] 
countfiles=len(filenames) 

for filename in filenames: 
    fname=os.path.splitext(filename)[0] 
    ext=os.path.splitext(filename)[1] 
    old=fname+ext 
    new=fname + '_' +ext 
    os.rename(old, new) 

これは、ファイルname.Howeverの最後にスコアの下に追加するファイルの名前を変更することができ、私はアンダースコアの後にファイルのシリアルを追加することは考えています。私は単純なPythonスクリプトを使用してファイルの名前を一括して変更する方法を知りたいと思います。私は何かアドバイスをいただければ幸いです。

ありがとうございました!

答えて

6

は、あなたが何かしようとしたがいる:「)(列挙」

import os 
filepath = 'C:/images/' 
os.chdir(filepath) 
for num, filename in enumerate(os.listdir(os.getcwd()), start= 1): 
    fname, ext = filename, '' 
    if '.' in filename: 
     fname, ext = filename.split('.') 
    os.rename(filename, fname + '_%s' %num + '.' + ext)  
+0

をあなたはについて説明し、もう少し喜ばう機能 – Mrsk

+0

をhttps://docs.python.org/2/library/functions.html#enumerate何それはちょうど余分な変数を作成します(つまり、(int、data)を含むタプルを返します)左辺がデータのインデックスです。あなたが望む任意の数に開始するように設定することができます(これを "1"とすることによって)。 – Nf4r

+0

num、filenameの列挙に必要なものはありません(os.listdir(os.getcwd())、1): ' ?あなたの例は、 'os.getcwd()'を追加しないで、Python 2.7.12で私のために実行されません。 – mmenschig

関連する問題