WindowsでPython=を使用しています。スクリプトの一部で、特定のディレクトリ(パスは知っています)からデスクトップにファイルをコピーします。
私はこれを使いました:
shutil.copy(txtName, '%HOMEPATH%/desktop')
txtName
はtxtファイルの名前です(フルパスを含む)。
エラーが発生します:
IOError: [Errno 2] No such file or directory: '%HOMEPATH%/DESKTOP'
何か助け?
スクリプトを任意のコンピューターで機能させたい。
os.environ["HOMEPATH"]
を使用してパスを取得できます。現在、文字通り%HOMEPATH%/Desktop
を実際のパスに置き換えずに検索しています。
多分次のようなもの:
shutil.copy(txtName, os.path.join(os.environ["HOMEPATH"], "Desktop"))
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)
これは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"))
まだコメントはできませんが、「デスクトップ」でユーザーパスに場所を結合することに基づくソリューションでは、デスクトップが非システムドライブに再マッピングされる可能性があり、しばしば再マッピングされるため、アプライアンスが制限されます。実際の場所を取得するには、Windowsレジストリを使用する必要があります...または https://stackoverflow.com/a/626927/7273599 のようなctypesを介した特別な関数
これを試して:
import os
file1 =os.environ["HOMEPATH"] + "\Desktop\myfile.txt"
これらの答えはすべて本質的に間違っています。英語のセッションでのみ機能します。
常に'Desktop'
であると想定する代わりに、XDGディレクトリを確認する必要があります。
正しい答えは次のとおりです: 言語のインストールとは関係なくpythonでユーザーのデスクトップパスを取得する方法(linux)