web-dev-qa-db-ja.com

デスクトップの場所を取得する方法は?

WindowsでPython=を使用しています。スクリプトの一部で、特定のディレクトリ(パスは知っています)からデスクトップにファイルをコピーします。

私はこれを使いました:

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

txtNameはtxtファイルの名前です(フルパスを含む)。

エラーが発生します:

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

何か助け?

スクリプトを任意のコンピューターで機能させたい。

15
Ben L

os.environ["HOMEPATH"]を使用してパスを取得できます。現在、文字通り%HOMEPATH%/Desktopを実際のパスに置き換えずに検索しています。

多分次のようなもの:

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

UnixまたはLinuxの場合:

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

windowsの場合:

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

コマンドに追加するには:

shutil.copy(txtName, desktop)
31
user559633

これはWindowsと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

まだコメントはできませんが、「デスクトップ」でユーザーパスに場所を結合することに基づくソリューションでは、デスクトップが非システムドライブに再マッピングされる可能性があり、しばしば再マッピングされるため、アプライアンスが制限されます。実際の場所を取得するには、Windowsレジストリを使用する必要があります...または https://stackoverflow.com/a/626927/7273599 のようなctypesを介した特別な関数

4
GPCracker

これを試して:

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

これらの答えはすべて本質的に間違っています。英語のセッションでのみ機能します。

常に'Desktop'であると想定する代わりに、XDGディレクトリを確認する必要があります。

正しい答えは次のとおりです: 言語のインストールとは関係なくpythonでユーザーのデスクトップパスを取得する方法(linux)

0
Salamandar