22

Pythonスクリプトから、などのMy DocumentsWindowsの特別なフォルダを取得するにはどうすればよいですか?Desktopwin32拡張機能が必要ですか?

Windows2000からWindows7で動作する必要があります。

4

5 に答える 5

23

win32拡張機能なしでそれを実行したい場合は、SHGetFolderPathctypesを呼び出すために使用できます。

>>> import ctypes.wintypes
>>> CSIDL_PERSONAL= 5       # My Documents
>>> SHGFP_TYPE_CURRENT= 0   # Want current, not default value

>>> buf= ctypes.create_unicode_buffer(ctypes.wintypes.MAX_PATH)
>>> ctypes.windll.shell32.SHGetFolderPathW(0, CSIDL_PERSONAL, 0, SHGFP_TYPE_CURRENT, buf)
0
>>> buf.value
u'C:\\Documents and Settings\\User\\My Documents'
于 2010-10-04T21:36:42.693 に答える
22

あなたはpywin32拡張機能でそれを行うことができます:

from win32com.shell import shell, shellcon
print shell.SHGetFolderPath(0, shellcon.CSIDL_MYPICTURES, None, 0)
# prints something like C:\Documents and Settings\Username\My Documents\My Pictures
# (Unicode object)

shellcon.CSIDL_xxx他の可能なフォルダを確認してください。

pywin32を使用するのが最善の方法だと思います。ctypesそれ以外の場合は、何らかの方法で関数にアクセスするために使用する必要がありSHGetFolderPathます(他の解決策も可能かもしれませんが、これらは私が知っているものです)。

于 2010-10-04T20:42:29.477 に答える
9
import win32com.client
oShell = win32com.client.Dispatch("Wscript.Shell")
print oShell.SpecialFolders("Desktop")
于 2011-03-02T15:44:38.603 に答える
6

winshellを試してください(この目的のために正確に作成されています):

import winshell

print 'Desktop =>', winshell.desktop ()
print 'Common Desktop =>', winshell.desktop (1)
print 'Application Data =>', winshell.application_data ()
print 'Common Application Data =>', winshell.application_data (1)
print 'Bookmarks =>', winshell.bookmarks ()
print 'Common Bookmarks =>', winshell.bookmarks (1)
print 'Start Menu =>', winshell.start_menu ()
print 'Common Start Menu =>', winshell.start_menu (1)
print 'Programs =>', winshell.programs ()
print 'Common Programs =>', winshell.programs (1)
print 'Startup =>', winshell.startup ()
print 'Common Startup =>', winshell.startup (1)
print 'My Documents =>', winshell.my_documents ()
print 'Recent =>', winshell.recent ()
print 'SendTo =>', winshell.sendto ()
于 2010-10-04T20:37:09.627 に答える
0

少しハッキーですが、特別なインポートは必要ありません

import os
os.popen('echo %appdata%').read().strip()
于 2019-01-17T18:50:02.347 に答える