Вопрос-Ответ

How to copy files

Как копировать файлы

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

Переведено автоматически
Ответ 1

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

import shutil

shutil.copyfile(src, dst)

# 2nd option
shutil.copy(src, dst) # dst can be a folder; use shutil.copy2() to preserve timestamp

  • Скопируйте содержимое файла с именем src в файл с именем dst. Оба src и dst должны указывать полное имя файла, включая путь.

  • Место назначения должно быть доступно для записи; в противном случае будет вызвано IOError исключение.

  • Если dst уже существует, он будет заменен.

  • Специальные файлы, такие как символьные или блочные устройства и каналы, не могут быть скопированы с помощью этой функции.

  • С copy, src и dst - это имена путей, заданные как strs.

Другой shutil метод, на который стоит обратить внимание, - это shutil.copy2(). Он похож, но сохраняет больше метаданных (например, временных меток).

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

Ответ 2









































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

Ответ 3

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


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

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

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

import shutil
shutil.copy2('/src/dir/file.ext', '/dst/dir/newname.ext') # complete target filename given
shutil.copy2('/src/file.ext', '/dst/dir') # target filename is /dst/dir/file.ext
Ответ 4

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


import os
import shutil
import subprocess

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

shutil.copyfile подпись

shutil.copyfile(src_file, dest_file, *, follow_symlinks=True)

# example
shutil.copyfile('source.txt', 'destination.txt')

shutil.copy подпись

shutil.copy(src_file, dest_file, *, follow_symlinks=True)

# example
shutil.copy('source.txt', 'destination.txt')

shutil.copy2 подпись

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)

# example
shutil.copy2('source.txt', 'destination.txt')

shutil.copyfileobj подпись

shutil.copyfileobj(src_file_object, dest_file_object[, length])

# example
file_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]])

# example
# In Unix/Linux
os.popen('cp source.txt destination.txt')

# In Windows
os.popen('copy source.txt destination.txt')

os.system подпись

os.system(command)


# In Linux/Unix
os.system('cp source.txt destination.txt')

# In Windows
os.system('copy source.txt destination.txt')

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

subprocess.call подпись

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.call('cp source.txt destination.txt', shell=True)

# In Windows
status = 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)

# example (WARNING: setting `shell=True` might be a security-risk)
# In Linux/Unix
status = subprocess.check_output('cp source.txt destination.txt', shell=True)

# In Windows
status = subprocess.check_output('copy source.txt destination.txt', shell=True)

2023-08-19 14:33 python file