ทำไม่ได้ยาก แต่ฉันมีอาการทางจิต
ทำไม่ได้ยาก แต่ฉันมีอาการทางจิต
คำตอบ:
import os
os.listdir("path") # returns list
ทางเดียว:
import os
os.listdir("/home/username/www/")
glob.glob("/home/username/www/*")
glob.globวิธีการดังกล่าวจะไม่ได้รายชื่อไฟล์ที่ซ่อนอยู่
ตั้งแต่แรกที่ฉันตอบคำถามนี้เมื่อหลายปีก่อนpathlibถูกเพิ่มใน Python วิธีที่ฉันต้องการแสดงรายการไดเรกทอรีมักจะเกี่ยวข้องกับiterdirวิธีการในPathวัตถุ:
from pathlib import Path
print(*Path("/home/username/www/").iterdir(), sep="\n")
['c:\\users']
glob.glob(r'c:\users\*')(glob มันไม่ได้จริงๆรายการไดเรกทอรี แต่ขยายเครื่องหมายดอกจันและสิ่งที่ประสบความสำเร็จในงานที่คล้ายกัน)
os.walk สามารถใช้ได้ถ้าคุณต้องการการเรียกซ้ำ:
import os
start_path = '.' # current directory
for path,dirs,files in os.walk(start_path):
for filename in files:
print os.path.join(path,filename)
glob.globหรือos.listdirจะทำมัน
import globENTER glob.glob(r'c:\users')ป้อนดูเหมือนว่าจะกลับมา['c:\\users']เท่านั้น ทำไมถึงเป็นอย่างนั้น? ฉันต้องการใช้ glob.glob เพราะผู้ใช้รายอื่นได้ชี้ให้เห็นมันควรจะส่งคืนเนื้อหาของไดเรกทอรีในขณะที่ไม่สนใจไฟล์ที่ซ่อนอยู่ นี้เป็นสิ่งสำคัญ.
glob:glob.glob(r'c:\users\*')
osโมดูลจับทุกสิ่ง
os.listdir(path)ส่งคืนรายการที่มีชื่อของรายการในไดเรกทอรีที่กำหนดโดยเส้นทาง รายการอยู่ในลำดับที่กำหนดเอง ไม่รวมรายการพิเศษ '.' และ '.. ' แม้ว่าจะมีอยู่ในไดเรกทอรี
มีจำหน่าย: Unix, Windows
ใน Python 3.4+ คุณสามารถใช้pathlibแพ็คเกจใหม่ได้:
from pathlib import Path
for path in Path('.').iterdir():
print(path)
Path.iterdir()คืนค่าตัววนซ้ำซึ่งสามารถเปลี่ยนเป็นlist:
contents = list(Path('.').iterdir())
ตั้งแต่ Python 3.5 os.scandirคุณสามารถใช้
ความแตกต่างคือมันส่งคืนรายการไฟล์ไม่ใช่ชื่อ ในบาง OS เช่น windows หมายความว่าคุณไม่จำเป็นต้องos.path.isdir/fileรู้ว่ามันเป็นไฟล์หรือไม่และนั่นช่วยประหยัดเวลา CPU เพราะstatเสร็จสิ้นเมื่อทำการสแกน dir ใน Windows:
ตัวอย่างเพื่อแสดงรายการไดเร็กทอรีและไฟล์พิมพ์ที่ใหญ่กว่าmax_valueไบต์:
for dentry in os.scandir("/path/to/dir"):
if dentry.stat().st_size > max_value:
print("{} is biiiig".format(dentry.name))
(อ่านคำตอบที่ครอบคลุมการปฏิบัติของฉันที่นี่ )
รหัสด้านล่างจะแสดงรายการไดเรกทอรีและไฟล์ภายใน dir อีกคนหนึ่งคือ os.walk
def print_directory_contents(sPath):
import os
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
else:
print(sChildPath)
.XYZไฟล์ในบริบทของระบบไฟล์ Unix) เมื่อใช้กับglob.glob("/home/username/www/.*")?