How do I copy a file in Python?

前端 未结 16 2208
隐瞒了意图╮
隐瞒了意图╮ 2020-11-21 07:12

How do I copy a file in Python?

I couldn\'t find anything under os.

16条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-11-21 07:37

    In Python, you can copy the files using

    • shutil module
    • os module
    • subprocess module

    import os
    import shutil
    import subprocess
    

    1) Copying files using shutil module

    shutil.copyfile signature

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

    shutil.copy signature

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

    shutil.copy2 signature

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

    shutil.copyfileobj signature

    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) Copying files using os module

    os.popen signature

    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 signature

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

    3) Copying files using subprocess module

    subprocess.call signature

    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 signature

    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)
    

提交回复
热议问题