python - 将文件从文件夹复制到不同文件夹时出现问题
问题描述
我正在尝试遍历目录中以“R008”开头的文件并将它们复制到不同的文件夹(它们都在同一个目录中)。
import shutil
import os
source = 'D:\\source_folder\\'
dest1 = 'D:\\destination_folder\\'
folder_name = input("What day of the month? ")
folder_path = (dest1 + folder_name)
i = 1
files = os.listdir(source)
for file in files:
if file.startswith('R008'):
if not os.path.exists(folder_path):
os.makedirs(folder_path)
shutil.copy(os.path.join(source, file), folder_path)
if os.path.exists(folder_path):
os.makedirs(folder_path + "_" + str(i))
shutil.copy(os.path.join(source, file), folder_path + "_" + str(i))
i += 1
我的问题是第一个文件总是被复制两次。为 4 个文件1创建 5 个文件夹。我不明白为什么
解决方案
您有两个独立的测试,第一个的主体if
(通过创建)第二个(存在)folder_path
的条件为真。所以你最终会执行两个副本。如果您只想复制到根路径,而不是复制到扩展路径,只需将第二个设置为与原始路径绑定,例如:if
folder_path
if
else
if
if not os.path.exists(folder_path):
os.makedirs(folder_path)
shutil.copy(os.path.join(source, file), folder_path)
else: # Could be elif os.path.exists(folder_path), but you literally just verified it doesn't exist
os.makedirs(folder_path + "_" + str(i))
shutil.copy(os.path.join(source, file), folder_path + "_" + str(i))
i += 1
推荐阅读
- python - 使用 MNIST 数据集进行迁移学习的代码中的“文件名”是什么?
- css - 如何从复选框中删除蓝色边框(引导程序 4.1)
- php - 如何加载jQuery中添加的最新数据
- mirth - 将 mirth 频道从 2.2.1 升级到 3.6.1 时出现问题
- javascript - RequireJS 在需要 jquery 时偶尔会抛出异常
- javascript - 如何在java脚本中修改对象数组
- javascript - salesforce 闪电 $A.get("e.force:createRecord") 它返回空
- android - google fit 是否同步 strava 活动卡路里
- r - group_by 和选择助手/标准评估
- c# - 如何卸载特定版本的 NuGet 包?