Python 使用列表查找目录中的文件夹,并将其复制到其他目录

Python 使用列表查找目录中的文件夹,并将其复制到其他目录,python,excel,windows,Python,Excel,Windows,我需要一些帮助来为这个问题创建python脚本 基本上,我有一个excel表格,其中列出了患者病历编号: 10000 10001 10002 10003 etc... 我有一个基本格式的驱动器: -AllImages --A ---A1 ---A2 ----10004 ---A3 ----10005 ----10006 ----10007 --B ---B1 ----10008 ----10009 -----10009_MRI -----10009_CT ---B2... 期望的输出是: -

我需要一些帮助来为这个问题创建python脚本

基本上,我有一个excel表格,其中列出了患者病历编号:

10000
10001
10002
10003
etc...
我有一个基本格式的驱动器:

-AllImages
--A
---A1
---A2
----10004
---A3
----10005
----10006
----10007
--B
---B1
----10008
----10009
-----10009_MRI
-----10009_CT
---B2...
期望的输出是:

-OutputImages
--10000
--10001
--10002
---10002_MRI
---10002_CT
--10003
etc...
然而,它们并不总是按照精确的顺序排列。因此,我需要将这些终端患者文件夹复制到不同的目录中,但它们也包含其他文件夹,这些文件夹也包含文件名中的病历号,如患者10009所示。我不想将这些子文件夹与主患者文件夹分开,因此当我搜索时,我希望在名称中包含患者病历的最高文件夹处停止

我写了一个脚本来查找文件夹,并在每个病历号旁边输出一个csv,说明在哪里可以找到图像,或者根本找不到图像。但是,我不知道如何让它将这些文件夹复制到新位置。这似乎是一个超级简单的操作,但我想不出来

这是我正在运行的当前脚本,我试图用我在这个网站上找到的一些代码修改我编写的另一个脚本,但它不起作用,我不太理解它,不知道为什么

import os
import shutil
import xlrd
import easygui
import numpy as np
import csv

#get the excel sheet
print ('Choose patient data sheet')
master_ws = 'TestDemo/TestPatientList.xlsx'
#easygui.fileopenbox()
workbook = xlrd.open_workbook(master_ws)
ws = workbook.sheet_by_name('Sheet1')
num_rows = ws.nrows - 1
#get correct MRN column
col = int(input ('Enter the column with patient MRNs (A=0, B=1, etc): '))
#file browser for choosing which directory to index
print ('Choose directory for indexing')
RootDir1 = r'TestDemo/TestDirectory'
#easygui.diropenbox()
#choose output folder
print ('Create output folder')
TargetFolder = r'Scripts/TestDemo/TestOutputDirectory'
#easygui.diropenbox()

#sorts directory titles into array of strings
folders = [f for f in sorted(os.listdir(RootDir1))]
folders = np.asarray(folders, dtype=str)

#gets worksheet row values and puts into an array of strings
arr = [ws.row(0)]
for i in range(1,num_rows+1):
     row = np.asarray(ws.row_values(i))
     arr = np.append(arr, [row], axis = 0)

#matching between folders and arr, ie. between directory index and master sheet

for y in range(1, len(arr)):
     for root, dirs, files in os.walk((os.path.normpath(RootDir1)), topdown=False):
          for name in dirs:
               if name.find(str(int(float(str(arr[y, col]))))):
                    print ("Found" + name)
                    SourceFolder = os.path.join(root,name)
                    shutil.copy(SourceFolder, TargetFolder) #copies to new folder

你能发布你尝试过的代码吗?是的,但我只是从这个网站上的其他答案中窃取了它,我真的不完全理解它,所以我不想让人们认为我在这里有某种理解基础,而我没有。但我补充了我目前所拥有的,我喜欢你对不理解你发布的代码的坦率态度。你似乎在努力保持礼貌,而不是成为社区的一个明目张胆的吸血鬼。所以你至少赢得了我一点好感。作为回报,这里有一些真诚的建议:为了帮助自己和社区,你必须自己承担大部分的“重担”。我的意思是你必须自己阅读和实验,试图自己理解代码。然后,如果你到了某个特定的点,你会陷入困境,这时你会带着一个特定的问题来到这个网站?好吧,希望你已经把你不理解的部分精确到了几行。也许这是你从未遇到过的时髦语法,在阅读文档时无法理解(或者在文档中找不到)。(你正在阅读文档,对吧?!)与其使用你不懂的大块代码(然后在这里发布大块代码),不如用你懂的小块代码来玩,然后从这些代码中逐步构建你的程序。现在,也许你已经在这么做了。你确实说过:我写了一个脚本,找到文件夹,并在每个病历号旁边输出一个csv,说明在哪里可以找到图像,或者根本找不到图像。但是,我不知道如何让它将这些文件夹复制到新位置。这似乎是一个超级简单的操作,但我想不出来!这几句话听起来像是合理的堆栈溢出问题的基础!您理解脚本中所有正在运行的代码吗?