首页 > 解决方案 > 使用shutil将空文件放置在多个位置

问题描述

我在源文件中有一个名为“Ready.txt”的文件,我想在多个文件夹中保存该文件的副本。

这是我写的代码。但这些副本仅复制到 sample2 文件夹,而不复制到其他文件夹。我遗漏了一些东西,请让我知道出了什么问题。

import shutil
import os


source = r'D:/Users/Desktop'
dest = r'D:/Users/Documents'
dest1 = dest + '/sample2'
dest2 = dest + '/sample3'
dest3 = dest + '/sample4'
files = os.listdir(source)





for f in files:
    f_path = os.path.join(source , f)
    if (f.startswith('Ready.txt')):
        shutil.copy(os.path.abspath(f_path), dest1)
    elif (f.startswith('Ready.txt')):
        shutil.copy(os.path.abspath(f_path), dest2)
    elif (f.startswith('Ready.txt')):
        shutil.copy(os.path.abspath(f_path), dest3)

print('done')

预期输出:

sample2 folder        
Ready.txt 

sample3 folder        
Ready.txt 

sample4 folder        
Ready.txt 

标签: pythonshutil

解决方案


你的代码总是落入第一个 IF

您对每个语句都有相同的条件

PS你可以在Python中删除不必要的圆括号

import shutil
import os


source = r'D:/Users/Desktop'
dest = r'D:/Users/Documents'
dest1 = dest + '/sample2'
dest2 = dest + '/sample3'
dest3 = dest + '/sample4'
files = os.listdir(source)





for f in files:
    f_path = os.path.join(source , f)
    if f.startswith('Ready.txt'):
        shutil.copy(os.path.abspath(f_path), dest1)
    elif f.startswith('Ready2.txt'):
        shutil.copy(os.path.abspath(f_path), dest2)
    elif f.startswith('Ready3.txt'):
        shutil.copy(os.path.abspath(f_path), dest3)

print('done')

Edit1:根据评论,您需要文件位于多个位置,然后执行以下操作:

import shutil
import os


source = r'D:/Users/Desktop'
dest = r'D:/Users/Documents'
dest1 = dest + '/sample2'
dest2 = dest + '/sample3'
dest3 = dest + '/sample4'
files = os.listdir(source)





for f in files:
    f_path = os.path.join(source , f)
    if f.startswith('Ready.txt'):
        shutil.copy(os.path.abspath(f_path), dest1)
        shutil.copy(os.path.abspath(f_path), dest2)
        shutil.copy(os.path.abspath(f_path), dest3)

print('done')

推荐阅读