Articles

Skopiuj plik w Pythonie

w naszych poprzednich samouczkach nauczyliśmy się kilku operacji na plikach Pythona, takich jak czytanie, pisanie i usuwanie. Naucz się kopiować plik w Pythonie w tym samouczku.

możemy skopiować plik w Pythonie przy użyciu różnych metod w ramach poniższych modułów,

  • shutil moduł
  • os moduł
  • subprocess moduł

w tym samouczku nauczymy się używać różnych metod dostarczonych przez powyższe moduły do kopiowania pliku w Pythonie.

1. moduł shutil do kopiowania pliku w Pythonie

modułshutil zapewnia kilka łatwych w użyciu metod, za pomocą których możemy usunąć, jak również skopiować plik w Pythonie. Spójrzmy na różne metody zdefiniowane w tym module specjalnie używane do kopiowania.

1. copyfileobj()

metoda copyfileobj() kopiuje zawartość pliku źródłowego do pliku docelowego przy użyciu odpowiednich obiektów pliku. Przyjrzyjmy się poniższemu kodowi,

import shutilsrc_file_obj=open('src.txt', 'rb')targ_file_obj= open('targ.txt' , 'wb')shutil.copyfileobj( src_file_obj , targ_file_obj )

Uwaga: obiekty pliku powinny wskazywać pozycje 0 (pozycja początkowa) zarówno dla odpowiednich plików źródłowych, jak i docelowych, aby skopiować całą zawartość.

2. copyfile()

metoda copyfile() kopiuje zawartość ze źródła do pliku docelowego za pomocą ścieżek do pliku. Zwraca ścieżkę pliku docelowego. Ścieżka docelowego pliku musi być zapisywalna, w przeciwnym razie wystąpi wyjątek OSerror.

import shutilshutil.copyfile( 'src.txt' , 'targ.txt' )

należy pamiętać, że metoda pozwala tylko na korzystanie ze ścieżek plików, a nie katalogów.

3. copy ()

ta metoda kopiuje plik źródłowy do pliku docelowego lub katalogu docelowego. W przeciwieństwie do copyfile(), metoda copy() pozwala na użycie katalogu docelowego jako argumentu, a także kopiuje uprawnienia do plików. copy() zwraca ścieżkę do pliku docelowego po skopiowaniu zawartości.

import shutilshutil.copy('/Users/test/file.txt', '/Users/target/')

plik o nazwie 'plik.txt 'jest tworzony w docelowym miejscu docelowym z całą zawartością i uprawnieniami skopiowanymi z’ / Users / test / file.txt”.

4. copy2()

metoda copy2() jest używana dokładnie tak samo jak metoda copy(). Działają również w ten sam sposób, z wyjątkiem faktu, że copy2() również kopiuje metadane z pliku źródłowego.

import shutilshutil.copy2('/Users/test/file.txt', '/Users/target/')

2. moduł os do kopiowania pliku w Pythonie

1. popen()

metoda popen() tworzy Potok do polecenia cmd. Metoda zwraca obiekt file podłączony do potoku cmd. Spójrz na poniższy kod,

#for Windowsimport osos.popen('copy src.txt targ.txt' )

#for Linuximport osos.popen('cp src.txt targ.txt' )

Dzięki tej metodzie możemy nie tylko kopiować pliki, ale także wykonywać inne zwykłe polecenia.

2. system()

metoda system() bezpośrednio wywołuje i wykonuje argument polecenia w powłoce podrzędnej. Jego wartość zwracana zależy od systemu operacyjnego, który uruchamia program. Dla Linuksa jest to stan zakończenia, natomiast Dla Windows jest to wartość zwracana przez powłokę systemową.

#for Linuximport osos.system(' cp src.txt targ.txt' )

#for Windowsimport osos.system(' copy src.txt targ.txt' )

3. moduł podprocesowy do kopiowania pliku w Pythonie

1. call ()

call()metoda podobna do os.system() bezpośrednio wywołuje lub uruchamia polecenie przekazane jako argument do funkcji.

# In Linuximport subprocesssubprocess.call('cp source.txt target.txt', shell=True)