adminaros Δημοσ. 22 Οκτωβρίου 2018 Δημοσ. 22 Οκτωβρίου 2018 (επεξεργασμένο) Σε ένα χωρο βιβλιοθηκη/εργαστηριο, θελουμε στην εκκινηση καθε υπολογιστη να ελεγχει αν η μνημη ειναι 4 GB. Αν δεν ειναι να μας βγαζει ενα παραθυρο ειδοποιησης, διοτι μπορει κάποιος να έκλεψε 1 απο τα 2 ντιμάκια μνημης, και το μηχανακι να δουλευει ψιλο-οκ, και εμεις να μην το αντιληφθουμε εγκαιρα. Βρηκαμε λοιπον "τις πρωτες 8 γραμμες" το παρακατω κωδικα πυθωνα 2.7 , που δουλευει οκ, και μας δινει οτι η μνημη ειναι 4 Το προβλημα ειναι οτι το if που προσθεσαμε εμεις δεν λειτουργει, μας λεει οτι η μνημη δεν ειναι 4 Καμιά ιδέα? --------------------------------------------------------------------------- import os process = os.popen('wmic memorychip get capacity') result = process.read() process.close() totalMem = 0 for m in result.split(" \r\n")[1:-1]: totalMem += int(m) print totalMem / (1024**3) if totalMem == 4 : print 'OK 4 is fine !!!' else : print ' memory is not 4 !!!' --------------------------------------------------------------------------- Επεξ/σία 22 Οκτωβρίου 2018 από adminaros
parsifal Δημοσ. 22 Οκτωβρίου 2018 Δημοσ. 22 Οκτωβρίου 2018 Σε πολλές μητρικές, το BIOS μπορεί να δεσμεύει μερικά Megabytes RAM και η συνολική ποσότητα που αναφέρει ως διαθέσιμη το λειτουργικό σύστημα εμφανίζεται αντιστοίχως μειωμένη. Μήπως γίνεται αυτό και στη δική σας περίπτωση; Αν ναι, τότε το conditional που έχεις δε θα λειτουργήσει γιατί η μεταβλητή totalMem θα έχει τιμή 3 αντί για 4 που περίμενες. Γράψε λάθος, μόλις δοκίμασα στο σύστημά μου και το WMI call επιστρέφει όντως το συνολικό DIMM capacity σε bytes, ασχέτως του πόσα είναι δεσμευμένα. Εδώ είναι το λάθος: ... print totalMem / (1024**3) # Η totalMem εξακολουθεί να είναι σε μονάδες bytes if totalMem == 4: # Εδώ κάνεις σύγκριση με μονάδες Gigabytes print 'OK 4 is fine !!!' else: print ' memory is not 4 !!!' 1
pmav99 Δημοσ. 22 Οκτωβρίου 2018 Δημοσ. 22 Οκτωβρίου 2018 Όπως λέει ο Parsifal, ξέχασες να κάνεις assignment. Για την ιστορία, ο pythonic τρόπος για να κάνεις αυτό που θες είναι έτσι (not-tested - δεν έχω windows εύκαιρα) import subprocess command = "wmic memorychip get capacity" output = subprocess.check_output(command) total_memory = sum(int(m) for m in output.split(" \r\n")[1:-1]) 2
adminaros Δημοσ. 23 Οκτωβρίου 2018 Μέλος Δημοσ. 23 Οκτωβρίου 2018 (επεξεργασμένο) 16 ώρες πριν, pmav99 είπε Όπως λέει ο Parsifal, ξέχασες να κάνεις assignment. Για την ιστορία, ο pythonic τρόπος για να κάνεις αυτό που θες είναι έτσι (not-tested - δεν έχω windows εύκαιρα) Ναι το assignment ηταν. Σας ευχαριστω πολυ. Δοκιμασα και το κομματι κωδικα που προτεινες αλλα μου βγαζει syntaχ error on the sum function δεν ξερω αν φταει η ριλις που ειναι 2.7 Επεξ/σία 23 Οκτωβρίου 2018 από adminaros
pmav99 Δημοσ. 23 Οκτωβρίου 2018 Δημοσ. 23 Οκτωβρίου 2018 6 λεπτά πριν, adminaros είπε Ναι το assignment ηταν. Σας ευχαριστω πολυ. Δοκιμασα και το κομματι κωδικα που προτεινες αλλα μου βγαζει synta error on the sum function Κατά πάσα πιθανότητα γιατί έχεις δύο κενά πριν τον χαρακτήρα τέλους γραμμής, ενώ εγώ έβαλα ένα. Tip: Οταν θα έχεις λάθη να ποστάρεις πάντα και το πλήρες traceback.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα