Moduł zacisz w Python

Moduł zacisz w Python
Zarządzanie plikami i obsługa obiektów plików są uważane za jedno z najbardziej trudnych zadań we wszystkich językach programowania. Niektóre języki programowania dostarczają nam niektórych narzędzi, które wyodrębniają trudne części obsługi plików z łatwymi w użyciu funkcjami i interfejsami. Właśnie to jest to, co Pythona Zaburzenie Moduł też robi.

Python Schutil

Moduł okładki Python pozwala programistowi korzystać z obiektów plików bardzo łatwo i bez głębszych szczegółów na temat tego, jak sprawy działają pod okładkami. Ten moduł zasadniczo wyodrębnia semantykę na niskim poziomie tworzenia i zarządzania obiektami plików, czyszczenie ich po użyciu i pozwala nam skupić się na logice biznesowej aplikacji. Zobaczymy tutaj wiele przykładów, zacznijmy.

Przykłady z modułem gniazdym Python

Zbadamy różne przykłady pokazujące zastosowanie Pythona Zaburzenie Moduł tutaj.

Kopiowanie pliku

Z skopiować plik() funkcja w Zaburzenie Moduł, możemy wykonać dokładną kopię istniejącego pliku w dowolnym miejscu na komputerze. Spójrzmy na przykładowy program, aby pokazać, jak można to zrobić:

Import OS
Zaburzenie importu
file_directory = './Akta'
wydrukuj („pliki przed:”, OS.ListDir (File_Directory))
Zaburzenie.skopiować plik('./Pliki/Hello.tekst', './Pliki/hello_again.tekst')
Drukuj („Pliki po:”, OS.ListDir (File_Directory))

Właśnie skopiowaliśmy plik, który istnieje w danym katalogu, aby sklonować plik w tym samym katalogu. Oto, co wracamy z tym poleceniem:

Kopia pliku sankcjonowania Pythona

Dobrą rzeczą w tej funkcji jest to, że wspomniana funkcja przyjmuje również jako wprowadzanie nazwy do nowego pliku do utworzenia.

Kopiowanie plików do innego katalogu

Możliwe jest skopiowanie pliku do nowego katalogu za pomocą gniazd Kopiuj() funkcjonować. Spójrzmy na to w akcji:

Import OS
Zaburzenie importu
Drukuj („tworzenie nowego katalogu.')
OS.mkdir („Linuxhint”)
wydrukuj („pliki przed:”, OS.Listdir („Linuxhint”))
Zaburzenie.Kopiuj('./Pliki/Hello.txt ', „Linuxhint”)
Drukuj („Pliki po:”, OS.Listdir („Linuxhint”))

Zobaczmy dane wyjściowe tego polecenia:

Kopiowanie pliku do nowego katalogu

Zauważ, że gdy plik jest kopiowany za pomocą Kopiuj() funkcjonować, Klonowane są również uprawnienia do pliku Ale metadane pliku nie są kopiowane. Oznacza to, że kiedy sprawdzisz, kiedy ten plik został wykonany, pokaże świeży czas po uruchomieniu tego skryptu.

Kopiowanie pliku za pomocą metadanych

W ostatniej sekcji widzieliśmy, jak możemy zrobić kopię pliku. Co jeśli chcesz zrobić dokładny klon pliku, który obejmuje klonowanie jego metadanych, podobnie jak podczas wykonania pliku itp. To też jest możliwe, ale to nie może działać w systemie opartym na POSIX. Spójrzmy na przykład, w jaki sposób można to zrobić:

Import OS
Zaburzenie importu
czas importu
new_directory = „Linuxhint”
src_file = './Pliki/Hello.tekst'
dest_file = './Linuxhint/Hello.tekst'
def plik_metadata (plik):
Stat_info = OS.Stat (plik)
drukuj („tryb:”, OCT (Stat_info.st_mode))
Drukuj („stworzony:”, czas.CTime (STAT_INFO.ST_CTIME))
Drukuj („Dostęp:”, czas.CTime (STAT_INFO.st_atime))
druk („zmodyfikowany:”, czas.CTime (STAT_INFO.st_mtime))
OS.mkdir (new_directory)
Drukuj („Metadane dla pliku źródłowego:”)
file_metadata (src_file)
Zaburzenie.copy2 (src_file, new_directory)
Drukuj („Metadane dla pliku docelowego:”)
file_metadata (dest_file)

Oto, co wracamy z tym poleceniem, kiedy uruchamiamy to w systemie opartym na POSIX (metadane nie są całkowicie sklonowane):

Skopiuj plik z metadanami

W systemach bez Posiksów nawet utworzony i dostępny czas byłby dokładnie dopasowany.

Klonowanie kompletnego katalogu

W ostatniej sekcji widzieliśmy, jak możemy zrobić kopię pliku. Tutaj zobaczymy, w jaki sposób możemy rekurencyjnie klonować pełny katalog. Oznacza to, że jeśli w katalogu istnieje inny katalog, który chcemy sklonować, również zostaną sklonowane.

import pprint
Zaburzenie importu
Import OS
src_directory = './Akta'
dest_directory = './Linuxhint '
Zaburzenie.copyTree (src_directory, dest_directory)
Drukuj („Zawartość źródła:”)
pprint.pprint (OS.Listdir (src_directory))
Drukuj („Zawartość miejsca docelowego:”)
pprint.pprint (OS.Listdir (dest_directory))

Zobaczmy dane wyjściowe tego polecenia:

Duplikat katalogu

Zauważ, że katalog, który przekazujemy do copyTree (), funkcjonuje jako Katalog docelowy nie może istnieć przed uruchomieniem tego programu.

Usuwanie katalogu

Usunięcie katalogu jest bardzo proste z rmtree () Funkcja w module. Zobaczmy tę funkcję w akcji tutaj:

import pprint
Zaburzenie importu
Import OS
delete_directory = 'Linuxhint'
current_directory = '.'
drukuj („treść przed usunięciem:”)
pprint.pprint (OS.Listdir (current_directory))
Zaburzenie.rmtree (delete_directory)
Drukuj („Treść po usunięciu:”)
pprint.pprint (OS.Listdir (current_directory))

Po uruchomieniu skryptu, Linuxhint Katalog jest usuwany wraz z zawartością. Oto, co wracamy z tym poleceniem:

Usuń katalog

Znajdowanie plików

Jeśli chcesz znaleźć plik obecny na zmiennej ścieżki na twoim komputerze, możemy użyć Który() funkcja, aby znaleźć ten plik według nazwy. Spójrzmy na przykład demonstracyjny tej funkcji:

Zaburzenie importu
Wydrukuj (zacieczka.który („bsondump”))
Wydrukuj (zacieczka.który („bez pliku”)))

Oto, co wracamy z tym poleceniem:

Znajdź plik na ścieżce

Monitorowanie przestrzeni systemu plików

W module sankcjonowania mamy funkcję disk_usage (), przez który możemy uzyskać informacje o przestrzeni dysku o naszym komputerze. Spójrzmy na przykład, który pokazuje te dane w sposób, który można czytać:

Zaburzenie importu
total_b, używane_b, free_b = supil.użycie dysku('.')
GB = 10 ** 9 # GB == Gigabyte
print („Total: : 6.2f gb '.format (total_b / gb))
print ('używane: : 6.2f gb '.format (używany_b / gb))
print („darmowe: : 6.2f gb '.format (free_b / gb))

Oto, co wracamy z tym poleceniem:

Znalezienie przestrzeni systemu plików

Archiwizujące katalogi

Jako ostatni przykład zobaczymy, w jaki sposób możemy zarchiwizować moduł gniazd make_archive () funkcjonować. Spójrzmy na przykładowy program:

Zaburzenie importu
Import OS
Archive_Directory = \
OS.ścieżka.ekspanduser (OS.ścieżka.dołącz („Destination-Directory-Path”, „Linuxhint”)))
root_dir = OS.ścieżka.ekspanduser (OS.ścieżka.dołącz („~”, '.ssh '))
Zaburzenie.make_archive (archive_directory, „gztar”, root_dir)

Oto, co wracamy z tym poleceniem:

Katalog archiwizacji

Jeśli nie zarodniesz plik smar i będziesz wyglądać, będzie on zawierał wszystkie .ssh Pliki katalogowe w IT.

Wniosek

W tej lekcji przyjrzeliśmy się, w jaki sposób możemy łatwo zarządzać obiektami plików z operacją plików na wysokim poziomie za pomocą Zaburzenie Moduł w Pythonie. Operacje takie jak kopiowanie zawartości pliku, utwórz nową kopię pliku itp. wyglądał łatwo z tym modułem.