我有一个过程,os.walk
扫描目录及其子目录以过滤pdf文件,并分离它们的名称和相应的路径名。我遇到的问题是,它将扫描最顶层的目录并打印相应的文件名,例如G:/Books/Title.Pdf
,但是一旦扫描子文件夹,例如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
我知道我忽略了一些简单的东西,但是不管怎样我都看不到它。一个新的视角会非常有帮助!
这段内容与IT技术无关。
\\
解释为 Python 字符串中的单个\
,则G:/Books/Sub Folder\\Title.Pdf
是一个完全有效的路径名。您是如何打印这个路径的? - Fred Fooindexlist.append(os.path.join(root,name))
,而不是indexlist.append(root + name)
。 - halexos.path.sep
会告诉你在你所使用的操作系统中正确的分隔符... 还有很多os.path
相关的东西可以帮助处理这种情况... - Joran Beasley