我希望所有的PDF或DOCs在输出中首先出现



所以我想出了这个代码来整理PDF和DOC文件,我得到了输出,但我需要它们是有序的。我希望所有的PDF或文档都排在前面。

import os, sys, re
pdf = re.compile(r'.*Shandeep.*.pdf')
doc = re.compile(r'.*Shandeep.*.doc')
for r, d, f in os.walk(r'/Users/shandeepkm/Desktop/Networking materials'):
    for items1 in f:
        match1 = re.findall(pdf, items1)
        match2 = re.findall(doc, items1)
        if match1 or match2:
           print items1

输出为:

  Shandeep_HERE.doc
  Shandeep_HERE.pdf
  Shandeep_R_OpS.doc
Shandeep KM AppQA.doc
Shandeep KM AppQA.pdf
Shandeep KM NetQA.doc
Shandeep KM NetQA.pdf
Shandeep KM Resume copy.doc
Shandeep KM Resume.doc
Shandeep KM Resume.pdf
Shandeep KM ResumeQA.doc
ShandeepResumeAm.doc
ShandeepResumeAm.pdf
ShandeepResumeC.doc
ShandeepResumeC.pdf

我希望它的顺序类似于:

  Shandeep_HERE.doc
  Shandeep_R_OpS.doc
Shandeep KM NetQA.doc
Shandeep KM AppQA.doc
Shandeep KM Resume copy.doc
Shandeep KM Resume.doc
Shandeep KM AppQA.pdf
  Shandeep_HERE.pdf 
Shandeep KM NetQA.pdf
Shandeep KM Resume.pdf
ShandeepResumeAm.pdf
ShandeepResumeC.pdf

我希望所有的PDF或DOCs都排在第一位

该顺序不是由您定义正则表达式的顺序定义的。

如果您希望按顺序打印,则需要进行一些后期处理。

import os, sys, re
pdf_list = []
doc_list = []
pdf = re.compile(r'.*Shandeep.*.pdf')
doc = re.compile(r'.*Shandeep.*.doc')
for r, d, f in os.walk(r'/Users/shandeepkm/Desktop/Networking materials'):
    for items1 in f:
        match1 = re.findall(pdf, items1)
        match2 = re.findall(doc, items1)
        if match1:
            pdf_list.append(match1)
        if match2:
           doc_list.append(match2)

,每个计数在末尾。

使用collections.Counter():

from collections import Counter
counter_pdf = Counter(pdf_list)
counter_doc = Counter(pdf_doc)
print counter_pdf  # Counter({'ShandeepResumeAm.doc': 2, 'ShandeepResumeAm.pdf': 1, ....})

首先编写一个遍历所有文件名的for循环。然后,将所需的所有文件名保存在一个数组中。循环遍历数组的每个索引,如

for x in range(len(extensionslist)):
    for root, dir, files in os.walk('[directory path]'):
        for file in files:
            if extensionslist[x] in file:
                print file

任何你想做的排序,你都可以在列表上做,比如按字母顺序排序

sorted(extensionslist). 

注:我原来写的sort是错的。要按字母顺序排列数组,您需要编写sorted()

最新更新