Zanurkuj w Pythonie/Praca z katalogami: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Piotr (dyskusja | edycje)
tłumaczenie
Sasek (dyskusja | edycje)
tłumaczenie
Linia 2:
== 6.5. Praca z folderami ==
 
Moduł <tt>os.path</tt> zawiera kilka funkcji służących do manipulacji plikami i katalogamifolderami. Przyjrzymy się teraz obsłudze ścieżek i odczytywaniu zawartości katalogów.
 
'''Przykład 6.16. Tworzenie ścieżek do plików'''
Linia 19:
# Funkcja <tt>join</tt> modułu <tt>os.path</tt> tworzy ścieżkę dostępu do pliku z jednej lub kilku ścieżek częściowych. W tym przypadku po prostu łączy dwa stringi. (Zauważ, że w Windowsie musisz używać podwójnych ukośników)
# W tym, trochę bardziej skomplikowanym, przypadku, <tt>join</tt> dopisze dodatkowy ukośnik do ścieżki przed dołączeniem do niej nazwy pliku. Byłem bardzo szczęśliwy, gdy to odkryłem, bo <tt>addSlashIfNecessary</tt> było jedną z najgłupszych małych funkcji, które musiałem napisać zaczynając programować w nowym języku. Nie pisz tej głupiej funkcji w Pythonie, mądrzy ludzie zrobili to już za Ciebie.
# <tt>expanduser</tt> rozwninie w ścieżce znak <tt>~</tt> na ścieżkę katalogufolderu domowego aktualnie zalogowanego użytkownika. Ta funkcja działa w każdym systemie, w którym użytkownicy mają swoje katalogifoldery domowe, między innymi w Windows, UNIX i Mac OS X; nic nie robi w systemie Mac OS
# Używając tych technik, możesz łatwo tworzyć ścieżki do plików i katalogówfolderów wewnątrz katalogufolderu domowego.
 
'''ExamplePrzykład 6.17. SplittingRozdzielanie Pathnamesścieżek'''
 
>>> os.path.split("c:\\music\\ap\\mahadeva.mp3") #(1)
Linia 36:
>>> extension
'.mp3'
# Funkcja <tt>split</tt> dzieli pełną ścieżkę i zwraca krotkę zawierającą ścieżkę katalogufolderu i nazwę pliku. Pamiętasz, jak mówiłem, że można używać przypisania wielu zmiennych do zwracania kilku wrtościwartości z funkcji? <tt>split</tt> jest taką właśnie funkcją.
# Przypisujesz wynik działania funkcji <tt>split</tt> krotce dwóch zmiennych. Każda zmienna będzie teraz zawierać wartość odpowiednigoodpowiedniego elementu krotki zwróconej przez funkcję <tt>split</tt>.
# Pierwsza zmienna, <tt>filepath</tt>, zawiera pierwszy element krotki - ścieżkę pliku.
# Druga zmienna, <tt>filename</tt>, zawiera drugi element krotki - nazwę pliku.
# Moduł <tt>os.path</tt> zawiera też funkcję <tt>splitext</tt>, która zwraca krotkę zawierającą właściwą nazwę pliku i jego rozszerzenie. Używasz tej samej techniki, co poprzednio, do przypisania każdej części do osobnej zmiennej.
 
'''ExamplePrzykład 6.18. ListingWyświetlanie Directorieszawartości folderu'''
 
>>> os.listdir("c:\\music\\_singles\\") #(1)
Linia 65:
'System Volume Information', 'TEMP', 'WINNT']
 
# Funkcja <tt>listdir</tt> pobiera ścieżkę do katalogufolderu i zwraca listę jego zawartości.
# <tt>listdir</tt> zwraca zarówno pliki jak i foldery, bez wskazania które są którymi.
# Możesz użyć filtrowania listy i funkcji <tt>isfile</tt> modułu <tt>os.path</tt> aby oddzielić pliki od folderów. <tt>isfile</tt> pobiera ścieżkę i zwraca <tt>1</tt>, jeśli reprezentuje ona plik albo <tt>0</tt> w innym przypadku. W przykładzie używamy <tt>os.path.join</tt> aby uzyskać pełną ścieżkę ale <tt>isfile</tt> pracuje też z częściowymi ścieżkami względnymi wobec bieżącego koatalogu. Możesz użyć <tt>os.getcwd()</tt> aby dostać bieżący katalog.
# <tt>os.path</tt> zawiera też funkję <tt>isdir</tt>, zwracającą <tt>1</tt> jeśli ścieżka reprezentuje katalogfolder i <tt>0</tt> w innym przypadku. Możesz jej użyć do uzyskania listy podkatalogówpodfolderów.
 
'''Przykład 6.19. Listowanie zawartości folderu w <tt>fileinfo.py</tt>'''
Linia 87:
 
{{Infobox|
WheneverJeślli possibleto możliwe, youpowinieneś shouldużywać usefunkcji thez functions inmodułów <tt>os</tt> andi <tt>os.path</tt> fordo file,manipulacji directoryplikami, andfolderami pathi manipulationsścieżkami. TheseTe modulesmoduły areopakowują wrappersmoduły forspecyficzne platform-specificdla moduleskonkretnego systemu, sowięc functionsfunkcje liketakie, jak <tt>os.path.split</tt> workdziałają onw systemach UNIX, Windows, Mac OS, andi we anywszystkich otherinnych platformsystemach supportedwspieranych byprze PythonPythona.
}}
 
Jest jeszcze jedna metoda dostania się do zawartości folderu. Jest bardzo potężna i używa zestawu symboli wieloznacznych, z którymi mogłeś się spotkać pracując w linii komend.
There is one other way to get the contents of a directory. It's very powerful, and it uses the sort of wildcards that you may already be familiar with from working on the command line.
 
'''Example 6.20. Listing Directories with glob'''