web-dev-qa-db-fra.com

Comment obtenir l'emplacement du bureau?

J'utilise Python sous Windows et je veux qu'une partie de mon script copie un fichier d'un certain répertoire (je connais son chemin) sur le bureau.

J'ai utilisé ceci:

shutil.copy(txtName, '%HOMEPATH%/desktop')

Alors que txtName est le nom du fichier txt (avec le chemin complet).

Je reçois l'erreur:

IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP'

De l'aide?

Je veux que le script fonctionne sur n'importe quel ordinateur.

15
Ben L

Vous pouvez utiliser os.environ["HOMEPATH"] pour obtenir le chemin. En ce moment, il essaie littéralement de trouver %HOMEPATH%/Desktop sans remplacer le chemin réel.

Peut-être quelque chose comme:

shutil.copy(txtName, os.path.join(os.environ["HOMEPATH"], "Desktop"))
16
tpearse

Sous Unix ou Linux:

import os
desktop = os.path.join(os.path.join(os.path.expanduser('~')), 'Desktop') 

sous Windows:

import os
desktop = os.path.join(os.path.join(os.environ['USERPROFILE']), 'Desktop') 

et pour ajouter votre commande:

shutil.copy(txtName, desktop)
31
user559633

Cela fonctionne à la fois sur Windows et Linux:

import os
desktop = os.path.expanduser("~/Desktop")

# the above is valid on Windows (after 7) but if you want it in os normalized form:
desktop = os.path.normpath(os.path.expanduser("~/Desktop"))
10
dashesy

Je ne peux pas encore commenter, mais les solutions basées sur la jonction de l'emplacement à un chemin utilisateur avec 'Desktop' ont une application limitée car Desktop pourrait et est souvent en cours de remappage sur un lecteur non système. Pour obtenir un emplacement réel, un registre Windows doit être utilisé ... ou des fonctions spéciales via des ctypes comme https://stackoverflow.com/a/626927/7273599

4
GPCracker

Essaye ça:

import os
file1 =os.environ["HOMEPATH"] + "\Desktop\myfile.txt" 
1
user12242097

Toutes ces réponses sont intrinsèquement erronées: elles ne fonctionnent que pour les sessions en anglais.

Vous devriez vérifier les répertoires XDG au lieu de supposer que c'est toujours 'Desktop'.

Voici la bonne réponse: Comment obtenir le chemin du bureau des utilisateurs dans python indépendamment de l'installation de la langue (linux)

0
Salamandar