2024-04-26 23:33:48 发布
网友
我有一个小程序,它需要在“我的文档”文件夹中创建一个小的.txt文件。这是我的密码:
textfile=open('C:\Users\MYNAME\Documents','w') lines=['stuff goes here'] textfile.writelines(lines) textfile.close()
问题是,如果其他人使用它,我如何将MYNAME更改为他们的帐户名?
MYNAME
使用os.path.expanduser(path),请参见http://docs.python.org/library/os.path.html
os.path.expanduser(path)
例如expanduser('~/filename')
expanduser('~/filename')
根据文档,这在Unix和Windows上都有效。
编辑:正斜杠由于斯文的评论。
在Windows上,您可以使用与问题的已接受答案中所示类似的内容:Python, get windows special folders for currently logged-in user。
对于My Documents文件夹路径,在shell.SHGetFolderPath()函数调用中使用shellcon.CSIDL_PERSONAL,而不是shellcon.CSIDL_MYPICTURES。
My Documents
shell.SHGetFolderPath()
shellcon.CSIDL_PERSONAL
shellcon.CSIDL_MYPICTURES
因此,假设您已经安装了PyWin32扩展1,那么这个可能会工作(请参阅下面更新部分的警告):
>>> from win32com.shell import shell, shellcon >>> shell.SHGetFolderPath(0, shellcon.CSIDL_PERSONAL, None, 0) u'<path\\to\\folder>'
更新:我刚读到something,上面说如果用户更改了Win7文档库中的默认保存文件夹,CSIDL_PERSONAL将不会返回正确的文件夹。这是指在库的“属性”对话框中可以执行的操作:
CSIDL_PERSONAL
复选标记表示路径设置为默认保存位置。
我目前不知道如何通过PyWin32调用SHLoadLibraryFromKnownFolder()函数(目前没有shell.SHLoadLibraryFromKnownFolder)。但是,应该可以使用ctypes模块这样做。
SHLoadLibraryFromKnownFolder()
shell.SHLoadLibraryFromKnownFolder
ctypes
1最新版本的Python for Windows扩展的安装程序当前可从以下位置获得:http://sourceforge.net/projects/pywin32
这项工作没有任何额外的lib:
import ctypes.wintypes CSIDL_PERSONAL = 5 # My Documents SHGFP_TYPE_CURRENT = 0 # Get current, not default value buf= ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH) ctypes.windll.shell32.SHGetFolderPathW(None, CSIDL_PERSONAL, None, SHGFP_TYPE_CURRENT, buf) print(buf.value)
如果用户更改了文档位置和/或默认保存位置,也可以使用。
使用
os.path.expanduser(path)
,请参见http://docs.python.org/library/os.path.html例如
expanduser('~/filename')
根据文档,这在Unix和Windows上都有效。
编辑:正斜杠由于斯文的评论。
在Windows上,您可以使用与问题的已接受答案中所示类似的内容:Python, get windows special folders for currently logged-in user。
对于
My Documents
文件夹路径,在shell.SHGetFolderPath()
函数调用中使用shellcon.CSIDL_PERSONAL
,而不是shellcon.CSIDL_MYPICTURES
。因此,假设您已经安装了PyWin32扩展1,那么这个可能会工作(请参阅下面更新部分的警告):
更新:我刚读到something,上面说如果用户更改了Win7文档库中的默认保存文件夹,
CSIDL_PERSONAL
将不会返回正确的文件夹。这是指在库的“属性”对话框中可以执行的操作:复选标记表示路径设置为默认保存位置。
我目前不知道如何通过PyWin32调用
SHLoadLibraryFromKnownFolder()
函数(目前没有shell.SHLoadLibraryFromKnownFolder
)。但是,应该可以使用ctypes
模块这样做。1最新版本的Python for Windows扩展的安装程序当前可从以下位置获得:http://sourceforge.net/projects/pywin32
这项工作没有任何额外的lib:
如果用户更改了文档位置和/或默认保存位置,也可以使用。
相关问题 更多 >
编程相关推荐