3

os.walkディレクトリとそのサブディレクトリでpdfファイルをフィルタリングし、それらの名前と対応するパス名を分離する手順があります。私が抱えている問題は、最上位のディレクトリをスキャンして適切なファイル名を出力することですG:/Books/Title.Pdfが、2番目にサブフォルダーをスキャンするG:/Books/Sub Folder/Title.pdfと、次のように出力されます

G:/Books/Sub Folder\\Title.Pdf

(これは明らかに無効なパス名です)。また、サブフォルダー内のすべてのサブフォルダーに \\ を追加します。

以下に手順を示します。

def dicitonary_list():
    indexlist=[]        #holds all files in the given directory including subfolders
    pdf_filenames=[]    #holds list of all pdf filenames in indexlist
    pdf_dir_list = []   #holds path names to indvidual pdf files 

    for root, dirs,files in os.walk('G:/Books/'):
        for name in files:
            indexlist.append(root + name)
            if ".pdf" in name[-5:]:
                pdf_filenames.append(name)

    for files in indexlist:
        if ".pdf" in files[-5:]:
            pdf_dir_list.append(files)

    dictionary=dict(zip(pdf_filenames, pdf_dir_list))       #maps the pdf names to their directory address

私が見逃しているのは単純なことだとわかっていますが、愛でもお金でも、それが何であるかを理解することはできません. 新鮮な目は大いに役立ちます!

4

1 に答える 1

11

スラッシュとバックスラッシュはどちらも、Windows 上の Python で完全に有効なパス区切り記号です。

>>> import os
>>> os.getcwd()
'j:\\RpmV'
>>> os.path.exists('j:\\Rpmv\\make.py')
True
>>> os.path.exists('j:/rpmv/make.py')
True
>>> os.path.isfile('j:\\Rpmv/make.py')
True
于 2012-09-05T19:52:42.067 に答える