दिए गए कार्यों द्वारा प्रदान किया जाता है:

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)

जिसने केवल [] का उत्पादन किया जिसमें कुछ भी नहीं था। मैंने दूसरा शुरू नहीं किया है क्योंकि मैं अभी भी पहले में फंसा हुआ हूं।

0
OnTheBrinkMan 11 पद 2020, 23:23
print(sorted(filenames), reverse=False) शुरुआत के लिए नहीं चल सकता क्योंकि reverse print के लिए मान्य तर्क नहीं है। यह लगभग निश्चित रूप से एक टाइपो है, लेकिन मैं यह पसंद करूंगा कि आपने प्रश्न पोस्ट करने से पहले इस तरह की गलतियों के लिए अपना उदाहरण कोड जांच लिया। वह बंद स्ट्रिंग के अतिरिक्त है।
 – 
roganjosh
11 पद 2020, 23:27
टाइपो कहाँ था? शायद यही मेरी समस्या है
 – 
OnTheBrinkMan
11 पद 2020, 23:40
filenames के इनिशियलाइज़ेशन में कई बग हैं। आपको अपने स्रोत की जांच करनी चाहिए और उन्हें सही करना चाहिए।
 – 
jarmod
12 पद 2020, 00:20

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
0
Amir saleem 11 पद 2020, 23:45
सुन्न करने की कोई जरूरत नहीं है। मानक पायथन यादृच्छिक आयात का उपयोग करने के लिए सरल और बेहतर, नहीं?
 – 
jarmod
12 पद 2020, 00:02
यह आप में से किसी को भी अजीब नहीं लगता कि फ़ाइल नामों में कई अवधियाँ हैं और आउटपुट की प्रत्येक पंक्ति में एक यादृच्छिक अक्षर f है?
 – 
jarmod
12 पद 2020, 00:22
f और MB दोनों सभी मानों के लिए समान हैं, और इसे हटा दिया जाना चाहिए, क्योंकि यह डेटा में है इसलिए मैं इसे नहीं हटाता।
 – 
Amir saleem
12 पद 2020, 00:34
मैं सिर्फ इतना कह रहा हूं कि पोस्टर को आरंभिक filenames में निहित मुद्दों को हल करना चाहिए। और फिर समस्या का समाधान करें, क्योंकि समाधान कोड बदल जाएगा।
 – 
jarmod
12 पद 2020, 01:09

यह लिंक उसी मुद्दे पर चर्चा करता है

निर्देशिका तर्क से फ़ाइलें प्राप्त करें, आकार के अनुसार क्रमबद्ध करें

मुझे बताएं कि क्या आपका मतलब कुछ और है या कुछ और चाहिए

-2
Sachin Rajput 11 पद 2020, 23:30
मैंने उन पर गौर किया और यहीं मुझे कोशिश करने के लिए कोड की दूसरी पंक्ति मिली लेकिन यह काम नहीं किया।
 – 
OnTheBrinkMan
11 पद 2020, 23:38
1
यह सिर्फ एक लिंक-ओनली उत्तर है। अगर आपको लगता है कि यह प्रश्न का उत्तर देता है, तो मूल प्रश्न को इसके डुप्लिकेट के रूप में चिह्नित करें
 – 
roganjosh
11 पद 2020, 23:40