Topic: Spazio libero su memoria di massa in Windows  (Letto 365 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline marcus72

  • python unicellularis
  • *
  • Post: 32
  • Punti reputazione: 0
    • Mostra profilo
Spazio libero su memoria di massa in Windows
« il: Luglio 14, 2017, 00:26 »
Ho scritto un programma in Python 3, ed al suo interno mi serve sapere lo spazio libero su una memoria di massa locale (anche se il prossimo passo sarà, magari, quello di operare con memorie di rete locale...). In ambiente Linux non ho problemi, ed anzi ho trovato modi diversi per ottenere questa informazione... Ma non riesco, su Windows 7, a trovare una libreria adatta già installata... Possibile che per una operazione simile, apparentemente comune e banale, si debba installare una libreria a parte?

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.638
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:Spazio libero su memoria di massa in Windows
« Risposta #1 il: Luglio 14, 2017, 08:45 »
Se ti sembra banale supportare n file systems arbitrari da un linguaggio cross platform...

Offline Giornale di Sistema

  • python sapiens sapiens
  • ******
  • Post: 3.124
  • Punti reputazione: 4
    • Mostra profilo
    • Distillato di Python
Re:Spazio libero su memoria di massa in Windows
« Risposta #2 il: Luglio 14, 2017, 09:24 »
una operazione simile, apparentemente comune e banale

La parola chiave è *apparentemente*. Installa psutil del nostro Giampaolo Rodola' e vivi felice.

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 2.851
  • Punti reputazione: 9
    • Mostra profilo
Re:Spazio libero su memoria di massa in Windows
« Risposta #3 il: Luglio 14, 2017, 09:40 »
Ciò che ti sembra un'esigenza comune e banale oggi, ti sembrava un'esigenza oscura ed esotica ieri prima che avessi bisogno di scrivere quello specifico programma. E' sempre così.
Se leggi la documentazione di os, ne capisci la filosofia. Cerca di essere più cross-platform possibile, ma chiaramente è modellato su posix. Se non esiste un equivalente chiaro di os.statvfs in windows, pazienza. Non è la filosofia del modulo os né di arrampicarsi sugli specchi per offrire l'impressione di un'interfaccia omogenea che non può esistere, né di offrire due interfacce diverse non compatibili lasciando che sia poi l'utente a sbrogliarsela. Se una cosa linux non ha un equivalente windows, non ce l'ha. Del resto nella libreria standard ci sono anche cose "solo windows". Del resto, se programmassi in c# ti troveresti più spesso nella situazione opposta.

Detto questo, non è che devi per forza installare un pacchetto esterno, su windows (che poi, mi chiedo che male ci sarebbe). Ti basta usare subprocess per chiamare qualsiasi utilità della shell che ti fornisce questo genere di informazioni (che so, fsutil). Diamine, se ti senti veramente cool potresti usare ctypes per chiamare direttamente la primitiva del sistema operativo che fa questo lavoro https://msdn.microsoft.com/it-it/library/windows/desktop/aa364937(v=vs.85).aspx.

Ma poi, alla fine della giornata, forse ti conviene lasciar perdere l'idea di non usare moduli esterni e provare invece psutil su tutti i sistemi, che è davvero cross-platform e ha un'api decente e comprensibile (e qui Giornale mi ha preceduto di un soffio).