2017-10-26 14 views
0

python 3.xを使ってyymmという名前の最新のフォルダを取得する方法はありますか? 特定のディレクトリ内にabc1708、abc1707、xyz1709のようなフォルダ名があるとします。 xyz1709から1709を選択するには、これは3つのフォルダの中で最新のものですから?ディレクトリ内の最新のyymmを持つフォルダを取得するには?

任意のコードがはるかに...事前に 感謝を理解されるであろう。..

+0

「どのようにxyz1709から1709を選択するか」という意味は? –

+0

@AGNGazer特定のディレクトリをループし、最新のyymmを含むフォルダ名を取得する必要があります。 – King

+0

最後に、私は私の質問の最終回答を策定しました。 (x - 4): フォルダ=(次のos.walk( 'C:\ Python34 \\ PyScript'))[1]) folderName =(max(フォルダ、キー=ラムダx:int )))) result = re.sub(r '[az] +'、 ''、folderName) print(結果) – King

答えて

0
dirnames = ['abc1708', 'abc1707', 'xyz1709'] 
max(dirnames, key=lambda x: int(x[-4:])) 

ディレクトリ名リストは、4桁の数字で終わらない名前が含まれている場合は、これらすべてを取り除く必要があります上記のコードを実行する前に名前を入力してください:

dirnames = ['a', 'abc1708', 'abc1707', 'xyz1709', 'nonumbers'] 

def check_dir_name(f): 
    try: 
     digits = f[-4:] 
     if len(digits) != 4: 
      return False 
     int(f[-4:]) 
    except: 
     return False 
    return True 

# first filter out bad directory names: 
good_dirnames = [x for x in dirnames if check_dir_name(x)] 

# now run the code on "good names" only: 
max(good_dirnames, key=lambda x: int(x[-4:])) 
+0

私はあなたのロジックを試しましたが、数字を含む以外の他のフォルダが存在する場合、その投げエラーです。 ** ValueError:基数10の 'lder'のint()のリテラルが無効** ** フォルダー名の最後の4桁ではなく完全なフォルダー名を付けています。 **フォルダの最後の4桁のみを提供するのではなく、最新のyymmを持つ完全なフォルダ名** – King

+0

@ King私の答えは公式化されたとおりにあなたの質問になりました。次回は、あなたの質問を定式化するときに、より正確になるようにしてください。 –

+0

が合意しました。お返事ありがとうございます。 :) – King

関連する問題