Pertanyaan Bagaimana cara menyalin file dengan python?


Bagaimana cara menyalin file dengan Python? Saya tidak dapat menemukan apa pun di bawah os.


1457
2017-09-23 19:23


asal


Jawaban:


shutil memiliki banyak metode yang dapat Anda gunakan. Salah satunya adalah:

from shutil import copyfile

copyfile(src, dst)

Salin isi file yang bernama src ke sebuah file bernama dst. Lokasi tujuan harus bisa ditulis; jika tidak, sebuah IOError pengecualian akan dinaikkan. Jika dst sudah ada, itu akan diganti. File khusus seperti perangkat karakter atau blok dan pipa tidak dapat disalin dengan fungsi ini. src dan dst adalah nama jalan yang diberikan sebagai string.


1770
2017-09-23 19:25



-----------------------------------------------------------------------------------
| Function          |Copies Metadata|Copies Permissions|Can Use Buffer|Dest Dir OK
-----------------------------------------------------------------------------------
| shutil.copy       |      No       |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfile   |      No       |        No        |      No      |    No
-----------------------------------------------------------------------------------
| shutil.copy2      |      Yes      |        Yes       |      No      |    Yes
-----------------------------------------------------------------------------------
| shutil.copyfileobj|      No       |        No        |      Yes     |    No
-----------------------------------------------------------------------------------

549
2018-05-20 20:01



copy2(src,dst) sering lebih bermanfaat daripada copyfile(src,dst) karena:

  • itu memungkinkan dst untuk menjadi direktori (bukan nama file target lengkap), dalam hal ini basename dari src digunakan untuk membuat file baru;
  • itu mempertahankan modifikasi dan akses info asli (mtime dan atime) dalam file metadata (namun, ini datang dengan sedikit overhead).

Berikut ini contoh singkatnya:

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

547
2017-09-23 19:29



Menyalin file adalah operasi yang relatif mudah seperti yang ditunjukkan oleh contoh di bawah ini, tetapi Anda sebaiknya menggunakan modul stdlib shutil untuk itu.

def copyfileobj_example(source, dest, buffer_size=1024*1024):
    """      
    Copy a file from source to dest. source and dest
    must be file-like objects, i.e. any object with a read or
    write method, like for example StringIO.
    """
    while True:
        copy_buffer = source.read(buffer_size)
        if not copy_buffer:
            break
        dest.write(copy_buffer)

Jika Anda ingin menyalin dengan nama file Anda bisa melakukan sesuatu seperti ini:

def copyfile_example(source, dest):
    # Beware, this example does not handle any edge cases!
    with open(source, 'rb') as src, open(dest, 'wb') as dst:
        copyfileobj_example(src, dst)

73
2017-09-24 07:21



Menggunakan modul shutil.

copyfile(src, dst)

Salin isi file bernama src ke file bernama dst. Lokasi tujuan harus bisa ditulis; jika tidak, pengecualian IOError akan ditingkatkan. Jika d sudah ada, itu akan diganti. File khusus seperti perangkat karakter atau blok dan pipa tidak dapat disalin dengan fungsi ini. src dan dst adalah nama path yang diberikan sebagai string.

Melihat filesys untuk semua fungsi penanganan file dan direktori yang tersedia dalam modul Python standar.


47
2017-09-23 19:27



Anda dapat menggunakan salah satu fungsi salin dari shutil paket:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Fungsi mempertahankan mendukung menerima salinan lainnya
                      peruntukan direktori dest. file obj metadata
―――――――――――――――――――――――――――――――――――――――――――――――――― ――――――――――――――――――――――――――――
shutil.copy                                            ☐ ☐
shutil.copy2                                           ☐
shutil.copyfile          ☐ ☐ ☐ ☐
shutil.copyfileobj       ☐ ☐ ☐
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Contoh:

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

40
2017-07-09 11:50



Contoh salinan Direktori dan File - Dari Barang Python Tim Golden:

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

import os
import shutil
import tempfile

filename1 = tempfile.mktemp (".txt")
open (filename1, "w").close ()
filename2 = filename1 + ".copy"
print filename1, "=>", filename2

shutil.copy (filename1, filename2)

if os.path.isfile (filename2): print "Success"

dirname1 = tempfile.mktemp (".dir")
os.mkdir (dirname1)
dirname2 = dirname1 + ".copy"
print dirname1, "=>", dirname2

shutil.copytree (dirname1, dirname2)

if os.path.isdir (dirname2): print "Success"

36
2018-03-15 10:11



Lihatlah modul shutil. Ini mengandung fungsi copyfile(src, dst)


21
2017-09-23 19:27



Dengan Python, Anda dapat menyalin file menggunakan


import os
import shutil
import subprocess

1) Menyalin file menggunakan shutil modul

shutil.copyfile  tanda tangan

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

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

shutil.copy  tanda tangan

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

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

shutil.copy2  tanda tangan

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

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

shutil.copyfileobj  tanda tangan

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) Menyalin file menggunakan os modul

os.popen  tanda tangan

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  tanda tangan

os.system(command)


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

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

3) Menyalin file menggunakan subprocess modul

subprocess.call  tanda tangan

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  tanda tangan

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)


19
2018-01-22 03:05