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

问题描述 投票:-1回答:2

我有这样的文件架构:

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

我有一个python脚本,我想在这些文件上运行

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

python bash
2个回答
1
投票

通过使用find,您可以获取文件列表并逐个处理:

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脚本......你是否使用字典而不是一堆单字母变量?

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

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


0
投票

您可能有一个主文件夹,其中包含所有包含tar.gz文件的文件夹。这将在一个cammand中提取所有文件现在让我们说'data'是你的根文件夹,其中包含所有子文件夹,这些子文件夹还包含你的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
© www.soinside.com 2019 - 2024. All rights reserved.