Amir said:
2. os.path.expanduser("~") always gives me "C:\\" instead of my
homepath. I have tried to change my homepath in WinXP using set
homepath(in command line), and alsaw using the "Environment Variables"
in WinXP system properties, non helped. I really have to fix this
somehow.
Well, according to os.path.expanduser()'s docstring, it uses the $HOME
environment variable to determine how to expand ~. I don't know what's
standard on Windows, but I tried checking for a $HOME and found none.
Here's (a slightly redacted copy of) what I *do* find (Win2K):
.... print '%15s %s' % (key, val)
....
TMP C:\DOCUME~1\Jeff\LOCALS~1\Temp
USERNAME jeff
COMPUTERNAME ######
LOGONSERVER ######
COMSPEC C:\WINNT\system32\cmd.exe
USERDOMAIN #######
COMMONPROGRAMFILES C:\Program Files\Common Files
PROCESSOR_IDENTIFIER x86 Family #...
PROGRAMFILES C:\Program Files
PROCESSOR_REVISION 0806
PATHEXT .COM;.EXE;.BAT;.CMD;#....
SYSTEMROOT C:\WINNT
PATH C:\Python22\.;C:\WINNT\system32;C:\WINNT;##....
APPDATA C:\Documents and Settings\Jeff\Application Data
TEMP C:\DOCUME~1\Jeff\LOCALS~1\Temp
HOMEDRIVE C:
SYSTEMDRIVE C:
PROCESSOR_ARCHITECTURE x86
NUMBER_OF_PROCESSORS 1
ALLUSERSPROFILE C:\Documents and Settings\All Users.WINNT
PROCESSOR_LEVEL 6
HOMEPATH \
OS2LIBPATH C:\WINNT\system32\os2\dll;
USERPROFILE C:\Documents and Settings\Jeff
OS Windows_NT
WINDIR C:\WINNT
Judging from this, I think that os.environ['USERPROFILE'] seems like it
may do what you want, though os.environ['APPDATA'] might be useful as
well. Of course, if you're trying to get something to work
cross-platform, things may be more difficult -- but that's because
Windows doesn't normally use ~ so its use is not supported very well.
You may be able to create a $HOME that's equivalent to $USERPROFILE...
Jeff Shannon
Technician/Programmer
Credit International