¿Cómo obtener la ubicación de escritorio?

Estoy usando Python en Windows y quiero que una parte de mi script copie un archivo de un directorio determinado (conozco su ruta) al escritorio.

Utilicé esto:

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

Mientras que txtName es el nombre del archivo txt (con ruta completa).

Me sale el error:

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

¿Alguna ayuda?

Quiero que el script funcione en cualquier computadora.

Puede usar os.environ["HOMEPATH"] para obtener la ruta. En este momento, literalmente, se está intentando encontrar %HOMEPATH%/Desktop sin sustituir la ruta real.

Quizás algo como:

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

En Unix o Linux:

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

en Windows:

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

y para agregar en su comando:

 shutil.copy(txtName, desktop) 

Esto funciona tanto en Windows como en 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")) 

No puedo hacer comentarios todavía, pero las soluciones basadas en unir una ubicación a una ruta de usuario con ‘Escritorio’ tienen un dispositivo limitado porque el Escritorio podría y, a menudo, se está reasignando a una unidad que no es del sistema. Para obtener una ubicación real, se debe usar un registro de Windows … o funciones especiales a través de ctypes como https://stackoverflow.com/a/626927/7273599