在多个目录中的文件上以及需要提取的文件上运行python脚本

时间:2018-07-03 08:39:46

标签: python bash

我有一个像这样的文件体系结构:

A/folder1/file.tar.gz
B/folder2/file.tar.gz

我有一个要在这些文件上运行的python脚本

有什么方法可以提取每个文件,然后使用bash或python中的某些东西运行脚本?

2 个答案:

答案 0 :(得分:1)

通过查找,您可以获取文件列表并逐一处理它们:

for TGZ in $(find . -name "file.tar.gz")
do
    WD=$(dirname $TGZ)
    cd $WD
    tar xzf file.tar.gz
    <your python script>
    rm *.faa
    cd -
done

那将是您单词的直接翻译:在文件所在的同一文件夹中解压缩文件,对其进行处理并删除数据。我假设提取的文件只是* .faa文件。由于您的脚本只能与当前文件夹中的文件一起使用,因此目录移动也很多。

就个人而言,使用一种明显不同的方法会更安全:

for TGZ in $(find . -name "file.tar.gz")
do
    mkdir -p work
    cd work
    tar xzf $TGZ
    <your python script>
    cd ..
    rm -rf work
done

也有文件夹移动,但是如果* .faa文件之外还有其他事情,您总是要移到同一位置并进行彻底清理。

关于您的python脚本...您是否使用字典而不是一堆单字母var?

base = dict()
base['A'] = 0
base['A'] += 1

这将大大减少代码大小并使代码更具可读性。

答案 1 :(得分:0)

您可能有一个主文件夹,其中包含包含tar.gz文件的所有文件夹。 这将在一个卡纸中提取所有文件 现在,假设“数据”是您的根文件夹,其中包含所有子文件夹,这些子文件夹进一步包含tar.gz文件。

现在

> for root,dirs,files in os.walk('path to data folder'):
>         for name in files:   
>             if(name.endswith('.gz'):
>                 #Run your script here