İşte Windows üzerinde dosyası tarafından büyük bir dizin dosyası çapraz nasıl cevap!
beni Linux üzerinde yapılır ne sağlayacak bir Windows DLL için bir manyak, ancak hiçbir şans gibi arama yaptı.
Yani, tek yolun bana bu statik işlevleri gösterecektir kendi DLL oluşturmak için olduğu sonucuna ama sonra pywintypes hatırladım. Ve YEEY! Bu zaten orada yapıldı. Ve dahası, yineleyici bir işlev zaten uygulandı! Güzel!
Windows FindFirstFile ile DLL(), FindNextFile() ve FindClose() oralarda hâlâ olabilir ama onu bulamadık. Yani, ben pywintypes kullanılır.
DÜZENLEME: Kernel32.dll dosyasında düz göründüler. Lütfen ssokolow'un cevabına ve benim yorumuma bakın.
Bağımlılık için özür dilerim. Ama ... \ site paketleri \ win32 klasöründe ve nihai bağımlılıkları gelen win32file.pyd ayıklamak ve gerekirse Programınızla win32types ait bağımsız dağıtabilirsiniz düşünüyorum. Bunun nasıl arama ve bazı diğerleri de zaman
Bu soruyu buldum. İşte
:
How to copy first 100 files from a directory of thousands of files using python?
I (Jason Orendorff tarafından) ve burada takdim benim, Windows sürümü ile buradan listdir() Linux sürümü ile tam bir kod yayınlanmıştır.
Yani aşağı yukarı çapraz platform sürümünü isteyen herkes, oraya gitmek ya da iki cevaplara kendini birleştirir.
DÜZENLEME: Ya da daha iyisi, Python 3'te kullanım scandir modül veya os.scandir() (.5) ve aşağıdaki versiyonlar. Hataları ve diğer bazı şeyleri daha iyi idare eder. Google'da kapalı geliyor insanlar için
from win32file import FindFilesIterator
import os
def listdir (path):
"""
A generator to return the names of files in the directory passed in
"""
if "*" not in path and "?" not in path:
st = os.stat(path) # Raise an error if dir doesn't exist or access is denied to us
# Check if we got a dir or something else!
# Check gotten from stat.py (for fast checking):
if (st.st_mode & 0170000) != 0040000:
e = OSError()
e.errno = 20; e.filename = path; e.strerror = "Not a directory"
raise e
path = path.rstrip("\\/")+"\\*"
# Else: Decide that user knows what she/he is doing
for file in FindFilesIterator(path):
name = file[-2]
# Unfortunately, only drives (eg. C:) don't include "." and ".." in the list:
if name=="." and name=="..": continue
yield name
, sanırım, ama don:
Kaynak (. Örn
FindFirstFileW
veFindNextFileW
fonksiyonları ücretsizstat
bilgilerinde atmak çünküDirEntry.stat(follow_symlinks=False)
Windows üzerinde bir sistem çağrı yapar asla) Python'un standart kütüphanesinde mevcut olduklarına inanıyoruz. Dosya adlarında yapmayı planladığınız işlem nedir? –