[英]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.