Bir dizinden okunan sıraya göre bir csv dosyasına çıktı yazan bir program ile çalışıyorum. Ancak sonları 1,2,3,4,5,6,7,8,9,10,11,12 ile çok sayıda dosya ile. Programım aslında dosyaları alfabetik sıralı olarak okuyor: 1,10,11,12 ...., 2,20,21 ..... 99. Sorun şu ki, başka bir program, siparişin sayısal sıralamada olduğunu varsayar ve grafik sonuçlarını çarpıtır.Okumadan önce bir dizindeki dosyaları nasıl sıralayabilirim?
aslında dosya gibi görünür: String.ext.ext2.1.txt, String.ext.ext2.2.txt
, vb ...
İkinci satırın nasıl çalıştığını açıklayabilir misiniz? – Jim
'sıralanmış_files = sıralanmış (dosyalar, anahtar = lambda x: int (x.split ('.') [3])) " Sıralanan "işlevler, ikinci bağımsız değişken tarafından verilen bir seçiciyi kullanarak ilk bağımsız değişkeni sıralar. Tabloyu belirli bir sütuna göre sıralamayı düşünün. Şimdi, ikinci argüman için. Bu, dosya adınızı bir parça listesine dönüştürerek ('.' ile ayrılmış) ve bu listedeki 3. öğeyi alarak bir işlevdir. –
Bununla çalışmak için var: sort_files = sıralanmış (file_list, key = lambda x: int (x. split ('.') [3]) if (x.endswith ("txt")) başka x) – Jim