2016-10-07 18 views
3

pathlibライブラリを使用して、特定のディレクトリの下にすべてのファイルをリストする関数を作成する人は助けてくれますか? \デスクトップ\テスト\ A \ A.TXTディレクトリ内のすべてのファイルを一覧表示するPython

  • C:\デスクトップ\テストここで

    は、私が持っている

    enter image description here

    • Cを持っています\ B \ B_1 \ B.txt

    • c:\ desktop \ test \ 123.txt

    私は上記のパスを持つ単一のリストを持つことが予想されますが、私のコードはネストされたリストを返します。

    def searching_all_files(directory: Path): 
        file_list = [] # A list for storing files existing in directories 
    
        for x in directory.iterdir(): 
         if x.is_file(): 
    
          file_list.append(x) 
         else: 
    
          file_list.append(searching_all_files(directory/x)) 
    
        return file_list 
    
    
    p = Path('C:\\Users\\akrio\\Desktop\\Test') 
    
    print(searching_all_files(p)) 
    

    ホープ誰もが私を修正できpathlibインポートパスから:

    は、ここに私のコードです。ありがとうございました

  • +1

    第2のケースでは 'append'ではなく' extend'を使用しますか? – Julien

    +0

    list.extend()が動作していないようです – Akrios

    +0

    何が動作していませんか?詳細をお願いします。 – Julien

    答えて

    0
    def searching_all_files(directory: Path): 
        file_list = [] # A list for storing files existing in directories 
    
        for x in directory.iterdir(): 
         if x.is_file(): 
          file_list.append(x)#here should be appended 
         else: 
          file_list.extend(searching_all_files(directory/x))# need to be extended 
    
        return file_list 
    
    2

    os.listdir()を使用できます。ディレクトリにあるすべてのもの(ファイルとディレクトリ)を取得します。あなただけのファイルをしたい場合、あなたははos.path使用して、これを絞り込むことができどちらか

    from os import listdir 
    from os.path import isfile, join 
    onlyfiles = [files for files in listdir(mypath) if isfile(join(mypath, files))] 
    

    か、(os.walk使用することができます)、それは訪問ディレクトリごとに二つのリストが得られます - 分裂へあなたのためのファイルとディレクトリ。あなただけのトップディレクトリをしたい場合、あなたはそれを使用

    from os import walk 
    files = [] 
    for (dirpath, dirnames, filenames) in walk(mypath): 
        files.extend(filenames) 
        break 
    
    +0

    必要条件は、pathlibを使用することです。とにかくありがとうございました – Akrios

    3
    from pathlib import Path 
    from pprint import pprint 
    
    def searching_all_files(directory): 
        dirpath = Path(directory) 
        assert(dirpath.is_dir()) 
        file_list = [] 
        for x in dirpath.iterdir(): 
         if x.is_file(): 
          file_list.append(x) 
         elif x.is_dir(): 
          file_list.extend(searching_all_files(x)) 
        return file_list 
    
    pprint(searching_all_files('.')) 
    
    5

    を生成する最初の時間を破ることができるすべてのファイルとディレクトリを一覧表示するグロブ。それをフィルタリングします。

    p = Path('C:\\Users\\akrio\\Desktop\\Test').glob('**/*') 
    files = [x for x in p if x.is_file()] 
    
    関連する問題