从每个子目录提取CSV并将其放置在与子目录相同的级别-OS模块

时间:2019-06-12 20:18:20

标签: python

我有一个类似下面的目录,其中包含大约50个“ SubDir”,但每个SubDir仅包含2个SubSubDirs(我称之为它们):

Parent Directory
 |
 +-- SubDir #1
 |   |  
 |   +-- SubSubDir #1
 |       |
 |       +-- file1.csv
 |       
 |   +-- SubSubDir #2
 |       |
 |       +-- file2.csv
 |
 +-- SubDir #2
 |   |  
 |   +-- SubSubDir #1
 |       |
 |       +-- file1.csv
 |       
 |   +-- SubSubDir #2
 |       |
 |       +-- file2.csv
 .
 .
 .

我需要提取每个csv,并将其放置在与SubSubDir#1和#2相同的级别上。我有一个遍历每个脚本的脚本,但是所有CSV都放在了父目录下,因为我无法弄清楚如何将移动目标与os模块合并。

rootdir = "/Users/Downloads/Test"
for root, dirs, files in os.walk(rootdir):
    for f in files:
        if f.endswith('.csv'):
            shutil.copy(os.path.join(root,f), rootdir)

我知道我在上面的代码中有rootdir,这就是为什么将CSV放在rootdir下的原因。

任何人都了解如何更改CSV复制的目的地。我假设某种方式将移动目标与os模块合并。到目前为止,我一直没有成功。预先感谢。

1 个答案:

答案 0 :(得分:1)

您可以找到问题文件所在的目录的名称,然后找到那个的目录,并将其放在其中:

for root, dirs, files in os.walk(rootdir):
    for f in files:
        if f.endswith('.csv'):
            fullpath = os.path.join(root, f)
            shutil.copy(fullpath, os.path.dirname(os.path.dirname(fullpath)))