データの保存に使用するファイルパスを設定するプログラムを作成しています。フォーマットは以下の通りです
c://users/username/.../endingpath
コンピューターを切り替えると、ユーザー名が変更されます。作業している特定のコンピューターのユーザー名を指定する方法または方法はありますか?または、パスコンピュータを独立させるさらに良い方法はありますか?
私はWindows7でPython2.7を実行しています
データの保存に使用するファイルパスを設定するプログラムを作成しています。フォーマットは以下の通りです
c://users/username/.../endingpath
コンピューターを切り替えると、ユーザー名が変更されます。作業している特定のコンピューターのユーザー名を指定する方法または方法はありますか?または、パスコンピュータを独立させるさらに良い方法はありますか?
私はWindows7でPython2.7を実行しています
Windowsでは、確認できるいくつかの事前定義された環境変数があります。それらの1つはですUSERNAME
。
それで:
import os
user_name = os.getenv("USERNAME")
Windowsは、一部のディレクトリの環境変数も定義します。ファイルをユーザーの個人用ホームディレクトリ(Windows 7の場合は:)に保存する必要がある場合は、または%SystemDrive%\Users\{username}
を使用できます。これは、ユーザー名を使用して独自のパスを作成するよりも優れています。USERDATA
USERPROFILE
APPDATA
@Matteo Italiaは、これがおそらく使用するのに最適な方法であると指摘しました。これは具体的には、アプリケーションがデータファイルを保存するためのディレクトリです。これは私には理にかなっています。彼は正しいと思います。
それで:
import os
appdata_dir_name = os.getenv("APPDATA")
ウィキペディアでWindows環境変数のリストを見つけました。
http://en.wikipedia.org/wiki/Environment_variable#Examples_from_Microsoft_Windows
SHGetKnownFolderPath関数を使用して適切なディレクトリを見つける必要があります。おそらくpywin32を使用してその関数を使用できます。
Windows 7を指定したので、プログラムが実行されるすべてのコンピューターでWindows 7を使用していると想定しているので、を使用できます'%UserProfile%/.../endingpath'
。(または'%UserProfile%\\...\\endingpath'
。)
http://en.wikipedia.org/wiki/Home_directory#Default_Home_Directory_per_Operating_System
以下を使用してください
os.path.expanduser(path)
パスがパス名の前に〜または〜userのいずれかで相対的であることを確認してください