python - 使用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
解决方案
你的代码总是落入第一个 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')
推荐阅读
- applescript - 删除 CalDAV 日历
- react-router - 错误:TypeError:无法读取未定义的属性“推送”
- intellij-idea - 有没有办法在 JetBrains IDE(PhpStorm、WebStorm IntelliJ 等)中搜索“未版本化的文件”
- asp.net - 类似 SignalR 的功能不起作用
- python - 无法打开使用 Django 下载的 Zip 文件
- c# - 嵌套时动态添加到Repeater的控件不会引发回发事件
- r - 通过 RStudio 编织时避免打印控制台控制字符
- c - 如何将二维数组分配给指向数组的指针
- javascript - 如何检查字符串是否包含在数组中?不和谐.js
- regex - 将 PascalCase 中的键替换为 maj SNAKE_CASE vscode