2017-08-14 10 views
0

私はPythonの方が新しいです。名前を変更したファイルのリストを保存するのに問題がありますので、最終的にファイルを新しいディレクトリに移動できます。私のコードは、以下に掲載されます。 Pythonリストに要素を追加するときに 'AttributeError'

import os 
new_files = [] 

     for orig_name in orig:   #This loop splits each file name into a list of stings containing each word 
      if '.' in orig_name:   #This makes sure folder names are not changed, only file names 
       base = os.path.splitext(orig_name)[0] 
       ext = os.path.splitext(orig_name)[1] 
       sep = base.split()    #Separation is done by a space 
       for t in sep:   #Loops across each list of strings into an if statement that saves each part to a specific variable 
        if t.isalpha() and len(t) == 3: 
         wc = t 
         wc = wc.upper() 
        elif len(t) > 3 and len(t) < 6: 
         wc = t 
         wc = wc.upper() 
        elif len(t) >= 4: 
         pnum = t 
         if pnum.isalnum: 
          pnum = pnum.upper() 
        elif t.isdecimal() and len(t) < 4: 
         opn = t 
         if len(opn) == 2: 
          opn = '0' + opn 
        else: 
         pass 
       new_nam = '%s OP %s %s' % (pnum, opn, wc)   #This is the variable that contain the text for the new name 
       new_nam = new_nam + ext 
       new_files = new_files.append(new_nam) 
       print(new_files) 

基本的にこのコードは、元のファイル名(ORIG)以上のループであり、特定大会(NEW_NAME)にそれらの名前を変更何。私が午前問題は、すべての反復のためですが、私は「new_files」リストに各new_namを保存しようとしていますが、私はこのエラーを取得しておいてください。

line 83, in <module> 
    new_files = new_files.append(new_nam) 
AttributeError: 'NoneType' object has no attribute 'append' 

基本的に私はあなたが「なし種類を追加することはできませんと言っていると思います"というリストには意味がありますが、new_namをすべて出力すると、それらはすべてNone型ではない文字列になります。だから私は、なぜこのコードが新しいファイル名をnew_filesリストに追加していないのか分からないと思う。ヒントのアドバイスは非常に高く評価されていますが、これを理解することはできません:/ありがとう!

答えて

2

list.appendは、内のオペレーションです。あなたは戻り値を割り当てずに関数を呼び出す必要があります:あなたのケースでは

In [122]: data = [1, 2, 3] 

In [123]: data.append(12345) 

In [124]: data 
Out[124]: [1, 2, 3, 12345] 

list docsで説明したように、あなたは

new_files.append(new_nam) 

すべてlist.___方法が必要になりますインプレースです。

+0

私はそれが何かばかげたことを知っていた、よく、毎日新しい何かを学ぶこと、ありがとう! – Bkal05

+0

@ Bkal05問題ありません。忘れないでください。もしそれが助けられれば、あなたは答えをマークすることができます。 –

関連する問題