दिए गए कार्यों द्वारा प्रदान किया जाता है:
filenames = [(f"file_{str(i+1).zfill(4)}.{random.choice(['.MP4','.JPG','.PNG','.AVI'])}", f {random.random()*100:.2f} MB") for i in range(20)]
random.shuffle(filenames)
filenames
मुझे निम्नलिखित को पूरा करने की आवश्यकता है:
# Sort the file names in increasing order of file size and print
??
# sort the files with filenames
??
प्रश्न चिह्नों के साथ जहां मुझे कोड प्रदान करना है। मैंने कोशिश की
print(sorted(filenames, reverse=False))
जिसने फाइलों को उनके आकार के बजाय उनके नंबर, जैसे file.001 के आधार पर क्रमबद्ध किया। मैंने भी कोशिश की:
import os, operator, sys
dirpath = os.path.abspath(sys.argv[0])
all_files = ( os.path.join(basedir, filename) for basedir, dirs, filenames in os.walk(dirpath) for filename in filenames )
files_and_sizes = ( (path, os.path.getsize(path)) for path in all_files )
sorted_files_with_size = sorted( files_and_sizes, key = operator.itemgetter(1) )
print(sorted_files_with_size)
जिसने केवल [] का उत्पादन किया जिसमें कुछ भी नहीं था। मैंने दूसरा शुरू नहीं किया है क्योंकि मैं अभी भी पहले में फंसा हुआ हूं।
2 जवाब
आंकड़े:
from numpy import random
filenames = [(f"file_{str(i+1).zfill(4)}.{random.choice(['.MP4','.JPG','.PNG','.AVI'])}, f {random.random()*100:.2f} MB") for i in range(20)]
random.shuffle(filenames)
फ़ाइल नाम:
['file_0011..JPG, f 58.18 MB',
'file_0013..MP4, f 77.25 MB',
'file_0006..PNG, f 20.44 MB',
'file_0016..PNG, f 67.31 MB',
'file_0007..MP4, f 2.62 MB',
'file_0018..MP4, f 45.86 MB',
'file_0014..PNG, f 93.33 MB',
'file_0005..JPG, f 5.70 MB',
'file_0009..AVI, f 45.29 MB',
'file_0015..JPG, f 12.80 MB',
'file_0017..MP4, f 47.74 MB',
'file_0010..AVI, f 37.97 MB',
'file_0012..AVI, f 11.25 MB',
'file_0019..AVI, f 66.01 MB',
'file_0001..JPG, f 26.32 MB',
'file_0008..PNG, f 85.10 MB',
'file_0020..PNG, f 52.03 MB',
'file_0003..AVI, f 87.62 MB',
'file_0004..PNG, f 37.04 MB',
'file_0002..JPG, f 93.97 MB']
[' '.join(line) for line in sorted(list(map(str.split, filenames)), key=lambda x:float(x[2]))]
file_0007..MP4, f 2.62 MB
file_0005..JPG, f 5.7 MB
file_0012..AVI, f 11.25 MB
file_0015..JPG, f 12.8 MB
file_0006..PNG, f 20.44 MB
file_0001..JPG, f 26.32 MB
file_0004..PNG, f 37.04 MB
file_0010..AVI, f 37.97 MB
file_0009..AVI, f 45.29 MB
file_0018..MP4, f 45.86 MB
file_0017..MP4, f 47.74 MB
file_0020..PNG, f 52.03 MB
file_0011..JPG, f 58.18 MB
file_0019..AVI, f 66.01 MB
file_0016..PNG, f 67.31 MB
file_0013..MP4, f 77.25 MB
file_0008..PNG, f 85.1 MB
file_0003..AVI, f 87.62 MB
file_0014..PNG, f 93.33 MB
file_0002..JPG, f 93.97 MB
f
है?
f
और MB
दोनों सभी मानों के लिए समान हैं, और इसे हटा दिया जाना चाहिए, क्योंकि यह डेटा में है इसलिए मैं इसे नहीं हटाता।
filenames
में निहित मुद्दों को हल करना चाहिए। और फिर समस्या का समाधान करें, क्योंकि समाधान कोड बदल जाएगा।
यह लिंक उसी मुद्दे पर चर्चा करता है
निर्देशिका तर्क से फ़ाइलें प्राप्त करें, आकार के अनुसार क्रमबद्ध करें
मुझे बताएं कि क्या आपका मतलब कुछ और है या कुछ और चाहिए
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
print(sorted(filenames), reverse=False)
शुरुआत के लिए नहीं चल सकता क्योंकिreverse
print
के लिए मान्य तर्क नहीं है। यह लगभग निश्चित रूप से एक टाइपो है, लेकिन मैं यह पसंद करूंगा कि आपने प्रश्न पोस्ट करने से पहले इस तरह की गलतियों के लिए अपना उदाहरण कोड जांच लिया। वह बंद स्ट्रिंग के अतिरिक्त है।filenames
के इनिशियलाइज़ेशन में कई बग हैं। आपको अपने स्रोत की जांच करनी चाहिए और उन्हें सही करना चाहिए।