Próbuję ustalić lokalizację folderów systemowych za pomocą Python 3.1. Na przykład "Moje dokumenty" = "C: \ Dokumenty i ustawienia \ Użytkownik \ Moje dokumenty", "Pliki programów" = "C: \ Program Files" itp.Znajdź lokalizacje folderów systemowych w Pythonie
Odpowiedz
Znalazłem a slightly different way of doing it. W ten sposób znajdziesz lokalizację różnych folderów systemowych i użyjesz prawdziwych słów zamiast identyfikatorów CLSID.
import win32com.client
objShell = win32com.client.Dispatch("WScript.Shell")
allUserDocs = objShell.SpecialFolders("AllUsersDesktop")
print allUserDocs
Inne foldery: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Pulpit, Ulubione, Czcionki, MyDocuments, NetHood, PrintHood, Najnowsze, SENDTO, StartMenu, Startup & Szablony
Aby uzyskać folder "Moje dokumenty", należy można użyć:
from win32com.shell import shell
df = shell.SHGetDesktopFolder()
pidl = df.ParseDisplayName(0, None,
"::{450d8fba-ad25-11d0-98a8-0800361b1103}")[1]
mydocs = shell.SHGetPathFromIDList(pidl)
print mydocs
Od here.
Nie jestem pewien, jaka jest odpowiednik zaklęć magicznych dla "Program Files", ale to powinno wystarczyć, aby zacząć.
W języku Python <3, tak. W Pythonie 3.1: >>> z importu win32com.shell skorupy Traceback (najnowsza wezwanie ostatni): Plik "
Czy jest zainstalowany win32com? Dostępne są wersje dla Python 3.1 (zobacz http://sourceforge.net/projects/pywin32/files/) –
[Edytuj] działa świetnie, dzięki! –
w Windows 7 mogę użyć następujących zmiennych środowiskowych w celu uzyskania dostępu do folderów, których potrzebuję:
>>> import os
>>> os.environ['USERPROFILE']
'C:\\Users\\digginc'
>>> os.environ['PROGRAMFILES']
'C:\\Program Files'
Mam 7 w tej chwili i to działa ładnie. Czy wiesz, jak niezawodne jest to w przypadku korzystania z wielu platform? Dokumentacja nie jest zbyt pomocna. Dzięki. –
Nie wiem niestety, panie Chimp, przepraszam. – cdiggins
wezwanie Windows API dla tej operacji, z Vista, jest SHGetKnownFolderPath. Istnieje opakowanie z licencją MIT (przy użyciu ctypes, więc nie ma zależności od pywin32) here.
>>> from knownpaths import *
>>> get_path(FOLDERID.ProgramFilesX86)
u'C:\\Program Files (x86)'
- 1. Jak zmienić ikony folderów w Pythonie w oknach?
- 2. Znajdź indeks końca słowa w pythonie
- 3. Znajdź rymowanie za pomocą NLTK w Pythonie
- 4. Znajdź poprzedni dzień kalendarzowy w Pythonie
- 5. Przedrzeźniające lokalizacje GPS w phonegapie
- 6. Wydawanie natywnych poleceń systemowych w Scali
- 7. Android wartości lokalizacyjne - ** Nazwy folderów
- 8. Docelowe lokalizacje danych SSIS
- 9. Dwie lokalizacje gacutil.exe
- 10. odtwarzanie dźwięków systemowych w iOS
- 11. Tworzenie aplikacji systemowych w Androidzie
- 12. Strategie wymiany obiektów systemowych
- 13. Znajdź maksymalną wartość w liście krotek w Pythonie
- 14. Unixowe tabele plików systemowych
- 15. Uzyskiwanie wszystkich tapet systemowych
- 16. Usunąć nieużywane lokalizacje z APK
- 17. Skutecznie Szukaj Najbliższe lokalizacje geograficzne
- 18. Lokalizacje szablonów i plików statycznych w Django
- 19. Znajdź najmniejszą potęgę 2 większą niż n w Pythonie
- 20. Przecięcie dwóch wykresów w Pythonie, znajdź wartość x:
- 21. Elasticsearch replikacja innych danych systemowych?
- 22. uncoditioned Count (*) vs tabelach systemowych
- 23. Znajdź podciągów w PyMongo
- 24. Znajdź indeksy nieparzystych liczb w wektorze całkowitej
- 25. Lista wszystkich folderów w katalogu
- 26. Tworzenie folderów w pamięci wewnętrznej
- 27. matplotlib - interaktywnie wybierz punkty lub lokalizacje?
- 28. OpenGL - Czy należy przechowywać atrybuty/jednolite lokalizacje?
- 29. wiosna-boot Usuń lokalizacje atrybuty @ConfigurationProperties
- 30. HTML Obcięcie w Pythonie
Czy ta biblioteka jest udokumentowana w dowolnym miejscu? Strona SourceForge to tylko labirynt banerów reklamowych i pustych stron wiki. Szukam katalogu Program Files (lub, przynajmniej, jak to było nazywane pod Windows ... na szczęście nie musiałem zajmować się Windowsiem od bardzo dawna). "AllUsersPrograms" wydaje się zwracać ścieżkę do "Programy" w menu Start (co jest interesujące, ponieważ nie jestem pewien, czy znalazłem nawet menu Start w Windows Server 2012!) –
@MIchael Scheper Obawiam się, że nie dotknąłem go, ponieważ zadałem to pytanie, a od tego czasu SourceForge znacznie się pogorszyło. Może spróbuj sprawdzić 'objShell' i sprawdzić, czy istnieje metoda wyświetlania wszystkich nazw' SpecialFolder'? –
Dzięki. To, co do tej pory znalazłem, to http://aspn.activestate.com/ASPN/docs/ActivePython/2.4/pywin32/com.html i, bardziej ogólnie, http://aspn.activestate.com/ASPN/docs/ ActivePython/2.4/pywin32/win32_modules.html oraz komentarz, który brzmi: "Pywin32 jest tak ściśle związany z wywoływaniami win32, że możesz po prostu spojrzeć na MSDN i użyć w nim składni w Pythonie". Nie zweryfikowałem jeszcze tego, ale może to pomoże innym właściwym organizacjom. –