簡體   English   中英

如何使用 python 按字母順序排列文件夾名稱列表

[英]How can I order a list of folder names alphabetically using python

我正在嘗試按字母順序打印文件夾的名稱。

它們顯然是在文件目錄中,但是當我分隔部分文件夾名稱時,它們不會按字母順序打印。

這是代碼:

import os, datetime
from tkinter import Tk
from tkinter.filedialog import askdirectory

SelectDrive = askdirectory(title='Select Folder') 
SubjectDetail = os.listdir(SelectDrive)

ListLen = (len(SubjectDetail))
SplitList = [i.split() for i in SubjectDetail]

i = 0

while i < ListLen:
    Name = SplitList[-i]
    NameLen =len(Name)

    DateOfBirth = (Name[NameLen-1])
    Name.remove(DateOfBirth)

    FullName = ' '.join(Name)

    print(FullName," ", DateOfBirth)

    i += 1

和當前的 output:

Arthur LEWIS 06111984
Sarah Rose WILLIAMS 23091974
Mark THOMAS 11062020
Lewis MCCARTNEY 15021994

最后是我正在尋找的 output:

Arthur LEWIS 06111984
Lewis MCCARTNEY 15021994
Mark THOMAS 11062020
Sarah Rose WILLIAMS 23091974

有用於處理路徑的pathlib庫。 所以你可以使用類似的東西

from pathlib import Path
from tkinter.filedialog import askdirectory

SelectDrive = askdirectory(title="Select Folder")
path = Path(SelectDrive)

list_of_dirs = sorted([i for i in path.iterdir() if i.is_dir()])

for d in list_of_dirs:
    print(d)

Name = SplitList[-i]是你的問題。 當您使用負索引時, Python 從列表的末尾從 1 開始計數。因此,如果您有一個列表,則a = [1, 2, 3, 4, 5] ,如果您執行a[-2]它將5計為索引-1 ,然后將4計為索引-2並將其返回給您。 這就是它返回第一個文件名的原因,因為-0被解釋為索引 0,但索引-1表示列表的最后一個元素,索引-2將是倒數第二個元素,依此類推。

我編寫了一些代碼,它輸出的內容與您要求的相同,但我不確定它是否適合您的需求:

import os
from tkinter.filedialog import askdirectory

SelectDrive = askdirectory(title='Select Folder') 
SubjectDetail = os.listdir(SelectDrive)

SplitList = [i.split() for i in SubjectDetail]

for person in SplitList:
    print(*person)

如果你想讓你的代碼保持不變,你應該能夠只使用索引i但不添加負號,這應該可以解決你的問題: Name = SplitList[i]

干杯。

我已經更改了我的 while 循環,所以它現在正在查看列表長度是否大於 i。 這使得 output 井然有序。

while ListLen > i:
    Name = SplitList[+i]
    NameLen =len(Name)
    NameSort = []
    DateOfBirth = (Name[NameLen-1])

    Name.remove(DateOfBirth)

    FullName = ' '.join(Name)

    print(FullName, " ",DateOfBirth)

    i += 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM