Как скопировать файл в Python?

Как скопировать файл в Python?

Я ничего не нашел в os .


shutil имеет множество методов, которые вы можете использовать. Один из них:

  from shutil import copyfilecopyfile (src, dst)  
  • Скопировать содержимое файл с именем src в файл с именем dst .
  • Место назначения должно быть доступно для записи; в противном случае возникнет исключение IOError .
  • Если dst уже существует, оно будет заменено.
  • Специальные файлы, такие как символьные или блочные устройства и каналы, не могут быть скопированы с помощью этой функции.
  • При copy , src и dst — имена путей, представленные в виде

Если вы используете os.path используйте copy , а не copyfile . copyfile принимает только строки.


Функция Копирует
метаданные
Копирует
разрешения
Использует файловый объект Назначением
может быть каталог
shutil.copy Нет Да Нет Да
shutil.copyfile Нет Нет Нет Нет
shutil.copy2 Да Да Нет Да
shutil.copyfileobj Нет Нет Да Нет

Функция Копирует
метаданные
Копирует
разрешения
Использует файловый объект Назначением
может быть каталог
shutil.copy Нет Да Нет Да
shutil.copyfile Нет Нет Нет Нет
shutil.copy2 Да Да Нет Да
shutil.copyfileobj Нет Нет Да Нет

copy2 (src, dst) часто более полезен, чем copyfile (src, dst) потому что:

  • он позволяет dst быть каталогом (вместо полного целевого имени файла), в этом случае для создания нового файла используется базовое имя src ;
  • он сохраняет исходный информация о модификации и доступе (mtime и atime) в метаданных файла (однако это связано с небольшими накладными расходами).

Вот краткий пример:

  import shutilshutil.copy2 ('/src/dir/file.ext', '/dst/dir/newname.ext') # complete  целевое имя файла givenshutil.copy2 ('/src/file. ext ','/dst/dir ') # целевое имя файла/dst/dir/file.ext  


copy2 (src, dst) часто бывает более полезным, чем copyfile (src, dst) , потому что:

  • он позволяет dst быть каталогом (вместо полного целевого имени файла), и в этом случае базовое имя src используется для создания нового файла;
  • он сохраняет исходную информацию о модификации и доступе (mtime и atime) в метаданных файла (однако это связано с небольшими накладными расходами ).

Вот краткий пример:

  import shutilshutil.copy2 ('/src/dir/file.ext'  , '/dst/dir/newname.ext') # полное целевое имя файла givenshutil.copy2 ('/src/file.ext', '/dst/dir') # целевое имя файла/dst/dir/file.ext 

Вы можете использовать одну из функций копирования из shutil пак каге:

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Функция сохраняет, поддерживает, принимает копии других разрешений в директорию dest.  метаданные файла obj ―――――――――――――――――――――――――――――――――――――――――――――――  ――――――――――――――――――――――――――――――― shutil.copy ✔ ✔ ☐ ☐shutil.copy2 ✔ ✔ ☐ ✔shutil.copyfile ☐ ☐  ☐ ☐shutil.copyfileobj ☐ ☐ ✔ ☐━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Пример:

  import shutilshutil.copy ('/etc/hostname', '/var/tmp/testhostname')  


Вы можете использовать одну из функций копирования из пакета shutil :

 ━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━Функция сохраняет, поддерживает, принимает копии других разрешений в директорию dest.  метаданные файла obj ―――――――――――――――――――――――――――――――――――――――――――――――  ――――――――――――――――――――――――――――――― shutil.copy ✔ ✔ ☐ ☐shutil.copy2 ✔ ✔ ☐ ✔shutil.copyfile ☐ ☐  ☐ ☐shutil.copyfileobj ☐ ☐ ✔ ☐━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

Пример:

  import shutilshutil.copy ('/etc/hostname', '/var/tmp/testhostname')  

В Python вы можете копировать файлы с помощью

  • shutil модуль
  • os модуль
  • subprocess module

  import osimport shutilimport subprocess  

1) Копирование файлов с использованием модуля shutil

shutil.copyfile подпись

  shutil.copyfile (src_file, dest_file, *, follow_symlinks = True) # example shutil.copyfile ('source.txt', '  пункт назначения. txt ')  

shutil.copy подпись

  shutil.copy (src_file, dest_file, *, follow_symlinks = True) # exampleshutil.copy ('source.txt', 'destination.txt')  

shutil.copy2 подпись

  shutil.copy2 (src_file, dest_file,  *, follow_symlinks = True) # exampleshutil.copy2 ('source.txt', 'destination.txt')  

shutil.copyfileobj подпись

  shutil.copyfileobj (src_file_object, dest_file_object [, length]) # examplefile_src = 'source.txt' f_src = open  (file_src, 'rb') file_dest = 'destination.txt' f_dest = open (file_dest, 'wb') shutil.copyfileobj (f_src, f_dest)  

2) Копирование файлов с использованием os module

os.popen подпись

  os.popen (cmd [, mode [, bufsize]]) # пример # В Unix/Linuxos.popen ('cp source.txt destination.txt') #  В Windowsos.popen ('copy source.txt destination.txt')  

os.system подпись

  os.system (command) # В Linux/Unixos.system ('cp source.txt destination.txt') # В Windowsos.system ('  copy source.txt destination.txt ')  

3) Копирование файлов с помощью модуля subprocess

subprocess.call подпись

  subprocess.call (args, *, stdin = None,  stdout = None, stderr = None, shell = False) # пример (ВНИМАНИЕ: установка `shell = True` может представлять угрозу безопасности) # В Linux/Unixstatus = subprocess.call ('cp source.txt destination.txt',  shell = True) # В Windowsstatus = subprocess.call ('copy source.txt destination.txt', shell = True)  

subprocess.check_output подпись

  subprocess.check_output (args, *, stdin = None, stderr = None, shell = False,  universal_newlines = False) # пример (ВНИМАНИЕ: установка `shell =  True` может быть угрозой безопасности) # В Linux/Unixstatus = subprocess.check_output ('cp source.txt destination.txt', shell = True) # В Windowsstatus = subprocess.check_output ('copy source.txt destination.txt'  , shell = True)  


В Python вы можете копировать файлы, использующие модуль

  • shutil
  • os модуль
  • subprocess модуль

  import osimport shutilimport subprocess  

1) Копирование файлов с помощью модуль shutil

shutil.copyfile подпись

  шутил. copyfile (src_file, dest_file, *, follow_symlinks = True) # пример shutil.copyfile ('source.txt', 'destination.txt')  

shutil.copy подпись

  shutil.copy (src_file, dest_file, *, follow_symlinks = True) # exampleshutil  .copy ('source.txt', 'destination.txt')  

shutil.copy2 подпись

  shutil.copy2 (src_file, dest_file, *, follow_symlinks = True) # exampleshutil.copy2 ('source.txt', 'destination.txt')  

shutil.copyfileobj подпись

  shutil.copyfileobj (src_file_object, dest_file_object [, length]) # examplefile_src = 'source.txt' f_src = open (file_src, 'rb') file_dest = 'destination.txt' f_dest = open (file_dest, 'wb'  ) shutil.copyfileobj (f_src, f_dest)  

2) Копирование файлов с помощью модуля os

os.popen подпись

   os.popen (cmd [, mode [, bufsize]]) # пример # В Unix/Linuxos.popen ('cp source.txt destination.txt') # В Windowsos.popen ('copy source.txt  destination.txt ')  

os.system подпись

  os.system (command) # В Linux/Unixos.system ('cp source.txt destination.txt') # В Windowsos.system ('copy source.txt destination.txt')  

3) Копирование файлов с помощью модуля subprocess

subprocess.call подпись

  subprocess.call (args, *, stdin = None, stdout = None, stderr = None, shell =  False) # пример (ВНИМАНИЕ: установка shell = True может представлять угрозу безопасности) # В Linux/Unixstatus = subprocess.call ('cp source.txt destination.txt', shell = True) # В Windowsstatus = subprocess.  call ('copy source.txt destination.txt', shell = True)  

subprocess.check_output подпись

  subprocess.check_output (  args, *, stdin = None, stderr = None, shell = False, universal_newlines = False) # пример (ВНИМАНИЕ: установка shell = True может представлять угрозу безопасности) # В Linux/Unixstatus = subprocess.check_output ('cp  source.txt destination.txt ', shell = True) # В Windowsstatus = subprocess.check_output (' copy source.txt destination.txt ', shell = True)  


Копирование файла — относительно простая операция, как показано в примерах ниже, но вместо этого вы должны использовать для этого модуль shutil stdlib.

  def copyfileobj_example (source, dest, buffer_size = 1024 * 1024): "" "Скопировать файл из источника в dest.  source и dest должны быть файловыми объектами, т.е. любыми объектами с методом чтения или записи, например StringIO.  "" "в то время как True: copy_buffer = source. read (buffer_size), если не copy_buffer: break dest.write (copy_buffer)  

Если вы хотите копировать по имени файла, вы можете сделать что-то вроде этого:

  def copyfile_example (source, dest): # Остерегайтесь, этот пример не обрабатывает крайние случаи!  с open (source, 'rb') как src, open (dest, 'wb') as dst: copyfileobj_example (src, dst)  


Копирование файла — относительно простая операция, как показано в примерах ниже, но вместо этого вы должны использовать для этого модуль shutil stdlib.

  def copyfileobj_example (source, dest, buffer_size = 1024 * 1024): "" "Копировать файл из источника в dest. source и dest должны быть файловоподобными объектами, то есть любым объектом с методом чтения или записи, например  например StringIO. "" "while True: copy_buffer = source.read (buffer_size), если не copy_buffer: break dest.write (copy_buffer)  

Если вы хотите скопировать по имени файла, вы может сделать что-то вроде этого:

  def copyfile_example (source, dest): # Осторожно, этот пример не обрабатывает крайние случаи!  с open (source, 'rb') как src, open (dest, 'wb') as dst: copyfileobj_example (src, dst)  

Используйте модуль shutil.

  copyfile (src, dst)  

Скопируйте содержимое файла с именем src в файл с именем dst. Место назначения должно быть доступно для записи; в противном случае возникнет исключение IOError. Если dst уже существует, он будет заменен. Специальные файлы, такие как символьные или блочные устройства и каналы, не могут быть скопированы с помощью этой функции. src и dst — имена путей, заданные в виде строк.

Взгляните на filesys для всех функций обработки файлов и каталогов, доступных в стандартных модулях Python.


Используйте модуль shutil.

  copyfile (src, dst)  

Скопируйте содержимое файла с именем src в файл с именем dst. Место назначения должно быть доступно для записи; в противном случае возникнет исключение IOError. Если dst уже существует, он будет заменен. Специальные файлы, такие как символьные или блочные устройства и каналы, не могут быть скопированы с помощью этой функции. src и dst — имена путей, заданные в виде строк.

Взгляните на filesys для всех функций обработки файлов и каталогов, доступных в стандартных модулях Python.


Пример копирования каталога и файла — из материала Тима Голдена по Python:

http://timgolden.me.uk/python/ win32_how_do_i/copy-a-file.html

  import osimport shutilimport tempfilefilename1 = tempfile.mktemp (".txt") open (filename1, "w"). close () filename2  = filename1 + ".copy" print filename1, "=>", filename2shutil.copy (filename1, filename2), если os.path. isfile (filename2): print "Success" dirname1 = tempfile.mktemp (".dir") os.mkdir (dirname1) dirname2 = dirname1 + ".copy" print dirname1, "=>", dirname2shutil.copytree (dirname1, dirname2)  if os.path.isdir (dirname2): print "Success"  


Пример копирования каталогов и файлов — из материалов Python Тима Голдена :

http://timgolden.me.uk/python/win32_how_do_i/copy-a-file.html

  import osimport shutilimport tempfilefilename1 =  tempfile.mktemp (".txt") open (filename1, "w"). close () filename2 = filename1 + ".copy" print filename1, "=>", filename2shutil.copy (filename1, filename2) if os.path.  isfile (filename2): print "Success" dirname1 = tempfile.mktemp (".dir") os.mkdir (dirname1) dirname2 = dirname1 + ".copy" print dirname1, "=>", dirname2shutil.copytree (dirname1, dirname2)  if os.path.isdir (dirname2): print "Success"  

Во-первых, я сделал для справки исчерпывающий перечень методов shutil.

  shutil_methods = {'copy': ['shutil.copyfileobj', 'shutil.copyfile', 'shutil.copymode'  , 'shutil.copystat', 'shutil.copy', 'shutil.copy2', 'shutil.copytree',], 'move': ['shutil.rmtree', 'shutil.move',], 'исключение':  ['exception shutil.SameFileError', 'exception shutil.Error'], 'other': ['shutil.disk_usage', 'shutil.chown', 'shutil.which', 'shutil.ignore_patterns',]}  

Во-вторых, объясните методы копирования в примерах:

  1. shutil.copyfileobj (fsrc, fdst [, length]) управлять открытыми объектами
  В [3]: src = '~/Documents/Head + First +  SQL.pdf'In [4]: ​​dst = '~/desktop'In [5]: shutil.copyfileobj (src, dst) AttributeError: объект' str 'не имеет атрибута' read '# скопируйте файл objectIn [7]:  с open (src, 'rb') как f1, open (os.path.join (dst, 'test.pdf'), 'wb') как f2: ...: shutil.copyfileobj (f1, f2) In [  8]: os.stat (os.path.join (dst, 'test.p  df ')) Out [8]: os.stat_result (st_mode = 33188, st_ino = 8598319475, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516067347, st_ctime3 = 1516067347, st_60mtime3 =  = 1516067345)  
  1. shutil.copyfile (src, dst, *, follow_symlinks = True) Копировать и переименуйте
  В [9]: shutil.copyfile (src, dst) IsADirectoryError: [Errno 21] Это каталог: ~/desktop  '# поэтому dst должен быть именем файла вместо имени каталога  
  1. shutil. copy () Копировать без сохранения метаданных
  В [10]: shutil.copy (src, dst) Out [10  ]: ~/desktop/Head + First + SQL.pdf '# проверьте их метаданные In [25]: os.stat (src) Out [25]: os.stat_result (st_mode = 33188, st_ino = 597749, st_dev = 16777220, st_nlink  = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516066425, st_mtime = 1493698739, st_ctime = 1514871215) В [26]: os.stat (os.path.join (dst, 'Head + First + SQL  .pdf ')) Out [26]: os.stat_result (st_mode = 33188, st_ino = 8598313736, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516066427, st_mtime = 1516066427, st_mtime = 156066427, st_mtime = 156066427, st_mtime = 156066427, st_mtime  st_ctime = 1516066425) # st_atime, st_mtime, st_ctime изменено  
  1. shutil.copy2 () Копировать с сохранение метаданных
  В [30]: shutil.copy2 (src, dst) Out [30]: ~/desktop/Head + First  + SQL.pdf'In [31]: os.stat (src) Out [31]: os.stat_result (st_mode = 33188, st_ino = 597749, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid  = 20, st_size = 13507926, st_atime = 1516067055, st_mtime = 1493698739, st_ctime = 1514871215) В [32]: os.stat (os.path.join (dst, 'Head + First + SQL.pdf')) Out [32  ]: os.stat_result (st_mode = 33188, st_ino = 8598313736, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516067063, st_mtime = 1493698670739, st_mtime = 1493698670739, st_mtime = 1493698670739) /code> 
  1. shutil.copytree()

Рекурсивно копировать все дерево каталогов с корнем в src, возвращая целевой каталог


Во-первых, я сделал для справки исчерпывающий перечень методов shutil.

  shutil_methods = {'copy': ['shutil.copyfileobj', 'shutil.copyfile', 'shutil.copymode'  , 'shutil.copystat', 'shutil.copy', 'shutil.copy2', 'shutil.copytree',], 'move': ['shutil.rmtree', 'shutil.move',], 'исключение':  ['исключение shutil.Sa  meFileError ',' exception shutil.Error '],' others ': [' shutil.disk_usage ',' shutil.chown ',' shutil.which ',' shutil.ignore_patterns ',]}  

Во-вторых, объясните методы копирования в примерах:

  1. shutil.copyfileobj (fsrc, fdst [, length]) управлять открытыми объектами
  В [3]: src = '~/Documents/Head + First + SQL.pdf'In  [4]: dst = '~/desktop'In [5]: shutil.copyfileobj (src, dst) AttributeError: объект' str 'не имеет атрибута' read '# скопируйте файл objectIn [7]: с open (src,  'rb') как f1, open (os.path.join (dst, 'test.pdf'), 'wb') как f2: ...: shutil.copyfileobj (f1, f2) В [8]: os.  stat (os.path.join (dst, 'test.pdf')) Out [8]: os. stat_result (st_mode = 33188, st_ino = 8598319475, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516067347, st_mtime = 1516067335, st_ctime = 15)  
  1. shutil.copyfile (src, dst, *, follow_symlinks = True) Скопировать и переименовать
  В [9]: shutil.copyfile (src, dst) IsADirectoryError: [Errno 21] Это каталог: ~/desktop '# поэтому dst должен быть именем файла вместо  имя каталога  
  1. shutil.copy () Копировать без сохранения метаданных
  In [10]: shutil.copy (src, dst) Out [10]: ~/desktop/Head + First + SQL.pdf '# проверьте их метаданные  [25]: os.stat (src) Out [25]: os.stat_result (st_mode = 33188, st_ino = 597749, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516066425  , st_mtime = 1493698739, st_ctime = 1514871215) В [26]: os.stat (os.path.join (dst, 'Head + First + SQL.pdf')) Out [26]: os.stat_re  sult (st_mode = 33188, st_ino = 8598313736, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516066427, st_mtime = 1516066425, st_cme_time25, st_cme_time25 изменено) /code> 
  1. shutil.copy2 () Копировать с сохранением метаданных
  In [30]: shutil.copy2 (src, dst) Out [30]: ~/desktop/Head + First + SQL.pdf'In [31]: os.  stat (src) Out [31]: os.stat_result (st_mode = 33188, st_ino = 597749, st_dev = 16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516067055, st_mtime = 14936_mtime = 149  = 1514871215) В [32]: os.stat (os.path.join (dst, 'Head + First + SQL.pdf')) Out [32]: os.stat_result (st_mode = 33188, st_ino = 8598313736, st_dev =  16777220, st_nlink = 1, st_uid = 501, st_gid = 20, st_size = 13507926, st_atime = 1516067063, st_mtime = 1493698739, st_ctime = 1516067055) # Предустановленное st_mtime  

>

  • shutil.copytree()
  • Рекурси Верно скопируйте все дерево каталогов с корнем в src, вернув целевой каталог


    Для небольших файлов и использования только Python встроенные, вы можете использовать следующий однострочник:

      с open (source, 'rb') как src, open (dest, 'wb') as dst:  dst.write (src.read ())  

    Как @maxschlepzig упомянул в комментариях ниже, это не оптимальный способ для приложений, где файл слишком велик или когда память критична , поэтому ответ Свати должен быть предпочтительнее.


    Для небольших файлов и использования только встроенных модулей Python вы можно использовать следующий однострочник:

      с open (source, 'rb') как src, open (dest, 'wb') как dst: dst.write (src. read ())  

    Как @maxschlepzig упомянул в комментариях ниже, это не оптимальный способ для приложений, где файл слишком велик или когда память критична, поэтому ответ Свати должен быть предпочтительно.


    Вы можете использовать os.system ('cp nameoffilegeneratedbyprogram/otherdirectory/' )

    или, как я,

      os.system ('cp' + rawfile + 'rawdata.dat')   

    где rawfile - это имя, которое я создал внутри программы.

    Это решение только для Linux


    Вы можете использовать os.system ('cp nameoffilegeneratedbyprogram/otherdirectory/')

    или, как я это сделал,

      os.system ('cp' + rawfile + 'rawdata.dat')  

    где rawfile - это имя, которое я сгенерировал внутри программы.

    Это решение только для Linux ution


    Для больших файлов я прочитал файл построчно и прочитал каждую строку в массив. Затем, когда массив достигнет определенного размера, добавьте его в новый файл.

      для строки в open ("file.txt", "r"): list.append (line) if len (list) == 1000000: output.writelines (list  ) del list [:]  


    Для больших файлов я прочитал файл построчно и прочитал каждую строку в массив. Затем, когда массив достигнет определенного размера, добавьте его в новый файл.

      для строки в open ("file.txt", "r"): list.append (line) if len (list) == 1000000: output.writelines (list  ) del list [:]  

      из подпроцесса import callcall ("  cp -p   ", shell = True)  


      из подпроцесса import callcall (  "cp -p  ", shell = True)  

    Как из Python 3.5 вы можете сделать следующее для небольших файлов (например, текстовых файлов, небольших файлов JPEG):

      from pathlib import Pathsource = Path ('../path/to/ my/file.txt ') destination = Path (' ../path/where/i/want/to/store/it.txt ') destination.write_bytes (source.read_bytes ())  

    write_bytes перезапишет все, что было в месте назначения


    Начиная с Python 3.5 вы можете сделать следующее для небольших файлов (например: текстовые файлы, маленькие JPEG):

      from pathlib import Pathsource = Path ('../path/to/my/ file.txt ') destination = Path (' ../path/where/i/want/to/store/it. txt ') destination.write_bytes (source.read_bytes ())  

    write_bytes перезапишет все, что было в месте назначения


      open (destination, 'wb'). write (open (source, 'rb'). read (  ))  

    Открыть исходный файл в режиме чтения и записать в целевой файл в режиме записи.


      open (destination, 'wb'). write (open (source, 'rb'). read ())  

    Открыть исходный файл в режиме чтения и записать в целевой файл в режиме записи.


    Вот простой способ сделать это без какого-либо модуля. Он похож на этот ответ, но имеет то преимущество, что он также работает, если это большой файл, который не помещается в ОЗУ:

      с open ('sourcefile', 'rb'  ) как f, open ('destfile', 'wb') как g: while True: block = f.read (16 * 1024 * 1024) # работать блоками по 16 МБ, если не block: # конец файла break g.  write (block)  

    Поскольку мы пишем новый файл, он не сохраняет время модификации и т. д.
    Затем мы можем использовать os.utime для этого при необходимости.


    Вот простой способ сделать это без какого-либо модуля. Он похож на этот ответ, но имеет то преимущество, что он также работает, если это большой файл, который не помещается в ОЗУ:

      с open ('sourcefile', 'rb'  ) как f, open ('destfile', 'wb') как g: while True: block = f.read (16 * 1024 * 1024) # работать блоками по 16 МБ, если не block: # конец файла break g.  write (block)  

    Поскольку мы пишем новый файл, он не сохраняет время модификации и т. д.
    Затем мы можем использовать os.utime для этого при необходимости.


    Если вы зашли так далеко . Ответ заключается в том, что вам нужен полный путь и имя файла

      import osshutil.copy (os.path.join (old_dir, file), os.path.join (new_dir,  файл))  


    На случай, если вы зашли так далеко. Ответ заключается в том, что вам нужен полный путь и имя файла

      import osshutil.copy (os.path.join (old_dir, file), os.path.join (new_dir,  файл))  

    Как и в принятом ответе, следующий блок кода может пригодиться если вы также хотите создать любые (несуществующие) папки на пути к месту назначения.

      из пути импорта ОС, makedirsfrom shutil import copyfilemakedirs (path.dirname  (дорожка. abspath (destination_path)), exist_ok = True) copyfile (source_path, destination_path)  

    Как отмечается в принятых ответах, эти строки будут перезаписывать любой файл, который существует по пути назначения, поэтому иногда может быть полезно также добавить: if not path.exists (destination_path): перед этим блоком кода.


    Подобно принятому ответу, следующий блок кода может пригодиться, если вы также хотите создать какие-либо (несуществующие) папки на пути к месту назначения.

      from os import path, makedirsfrom shutil import copyfilemakedirs (path.dirname (path.abspath (destination_path)), exist_ok = True) copyfile (source_path, destination_path)  

    В качестве Примечания к принятым ответам, эти строки перезапишут любой файл, который существует по пути назначения, поэтому иногда может быть полезно также добавить: , если не path.exists (destination _path): перед этим блоком кода.

    Оцените статью
    techsly.ru
    Добавить комментарий