फाइल सिस्टम पर फ़ाइलें क्रमबद्ध नहीं हैं। आप जिसके परिणामस्वरूप फ़ाइल नाम अपने आप का उपयोग कर सॉर्ट कर सकते हैं sorted()
function:
for infile in sorted(glob.glob('*.txt')):
print "Current File Being Processed is: " + infile
नोट अपने कोड में os.path.join
कॉल नो-सेशन है; केवल एक तर्क के साथ यह कुछ भी नहीं करता है लेकिन उस तर्क को अनियंत्रित कर देता है।
ध्यान दें कि आपकी फ़ाइलें वर्णमाला क्रम में क्रमबद्ध होंगी, जो 10
9
से पहले रखती है। आप छंटाई सुधार करने के लिए एक कस्टम कुंजी फ़ंक्शन का उपयोग कर सकते हैं:
import re
numbers = re.compile(r'(\d+)')
def numericalSort(value):
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts
for infile in sorted(glob.glob('*.txt'), key=numericalSort):
print "Current File Being Processed is: " + infile
numericalSort
समारोह एक फ़ाइल नाम में किसी भी अंक बाहर विभाजन, यह एक वास्तविक संख्या में बदल जाता है, और छँटाई के लिए परिणाम देता है:
>>> files = ['file9.txt', 'file10.txt', 'file11.txt', '32foo9.txt', '32foo10.txt']
>>> sorted(files)
['32foo10.txt', '32foo9.txt', 'file10.txt', 'file11.txt', 'file9.txt']
>>> sorted(files, key=numericalSort)
['32foo9.txt', '32foo10.txt', 'file9.txt', 'file10.txt', 'file11.txt']
स्रोत
2012-08-23 14:31:19
HI। सॉर्ट किए गए फ़ंक्शन दुर्भाग्यवश ऑर्डर को नहीं बदलता है। – user1620012
@ user1620012: सॉर्टिंग ऑर्डर को बेहतर बनाने के लिए मेरा उत्तर अपडेट किया गया। –
hi..actually मेरी फाइलों के नाम हैं .. text-text9-text.txt, text-text10-text.txt आदि – user1620012