J'utilise Python2.6. J'essaie d'énumérer les lecteurs de disque qu'un système peut avoir. p>
sous Windows, il peut s'agir de quelque chose comme Est-ce que quelqu'un connaît une voie à plate-forme croix (c'est-à-dire celui qui fonctionne sur Linux, Windows et Mac) en Python? P>
merci! p> c: / code>,
d: / code>,
e: / code>, etc. sur Linux, il Peut-être quelque chose comme
/ boot code>,
/ support / sdcard code>, etc., et je ne sais pas ce que c'est comme sur un Mac. Peut-être quelque chose sous / volumes. P>
4 Réponses :
Il n'y a pas vraiment un schéma de dénomination unifié pour les périphériques Linux qui vous garantit un périphérique de blocage automatique. Il y a des conventions, mais elles peuvent varier considérablement et je peux appeler ma clém-drive / thomas / o si je veux et il n'y a pas de chemin croisé dans Python de savoir: p>
Je suis à peu près sûr que non plus un module Python multi-plate-forme qui vous permettra de déterminer que H: / est formable sur un système Windows, mais que Z: / n'est pas. P>
Chaque système nécessitera ses propres chèques et validations spécifiques que vous pourrez mieux apprendre d'étudier le logiciel de manipulation de disque open source. P>
Je pensais à la façon dont un programme comme GParted le fait. Mais ce n'est pas une plate-forme transversale, seulement Unix (ou même Linux), non? Les lecteurs ne doivent pas nécessairement être formables. Juste, ils devraient être attachés ou des médias internes. Comme je traite principalement des cartes SD, je ne fais que la liste / les médias sous Linux, / volumes sur Mac et tous les disques (C: /, D: / etc.) sous Windows.
Ne pas réfléchir, le voler. Les idées, je veux dire, mais la source aussi, sauf si vous aimez la réinventer des roues. sourceforge.net/projects/gparted/files/gparted
Et il n'y a aucune garantie sur tout ce que / media existe même sur Linux ou qu'un entraînement non formaté sera monté pour que vous puissiez voir. Même NT / Vista / 7 permet de monter un périphérique sur un répertoire arbitraire de la manière UNixy.
Le package pstutile ( https://pypi.python.org/pypi/psutil ) a une fonction disk_partitions.
Windows: p> linux: p>
Sur OS X, mon lecteur a un nom qui apparaît dans Finder (Macintosh HD ... Je suis sûr que c'est le nom par défaut.) Avez-vous une idée de la façon dont je pouvais trouver ce nom, car c'est ce qui montre ... SDISKPART (Device = '/ Dev / Disk0SS2', MounTpoint = '/', Fstype = 'HFS', OPTS = 'RW, Local, Rootfs, Dovolfs, Journaled, Multilabel') Code>.
Je ne connais pas bien OS X, mais je soupçonnerais que ce serait l'étiquette du disque. Peut-être un appel à disklabel une>?
Cette réponse ne fonctionne que pour les disques montés
La réponse d'Eric Smith à utiliser Cela vous donne les noms lisibles humains qui, au moins dans mon cas, seraient préférables (c'est-à-dire qu'il vous donne psutil code>
fonctionne bien pour moi sur Windows, mais sur OS X, je préfère ceci: Macintosh HD Code > Au lieu de
/ code> ou
/ dev / disk0s2 code>.) p> p>
Obtenez l'attribut «MountPoint '» du tuple nommé renvoyé par Psutil pour obtenir le nom lisible humain
@Debjit - Nope. Sur OS X qui renvoie / code> au lieu de
macintosh HD code>
Je ne vois pas un moyen d'inclure des montures nettes sous Windows. I.e., \ foobar \ home est mappé sur x :, mais x: n'apparaît pas dans la liste renvoyée par psutil.disk_partitions () (les lecteurs locaux sont). P>
Mise à jour: pour inclure des lecteurs nets dans la liste retournée, utilisez simplement: p>
psutil.disk_partitions (tout = vrai) p>
fonctionne assez bien. P>
Quel est le résultat final que vous voulez réaliser avec cela?
Je construis une interface pour les utilisateurs pour sélectionner des lecteurs de disque attachés à l'ordinateur. Il aura besoin de connaître l'espace disponible sur les lecteurs et de la possibilité de les formater avec des systèmes de fichiers FAT32 (peut-être) et de pouvoir accéder aux fichiers.
Suggestion: Stupez la sélection pour travailler avec ce que vous avez accès, obtenez-le pour fonctionner, puis effectuez la sélection comparativement facile du périphérique. Et faites attention à la formation, au cas où cela ne va pas sans dire.
/ etc / fstab et la sortie de montage sont des réponses évidentes pour le côté Linux.