首页 > 解决方案 > 对多个目录中的文件、需要提取的文件运行 python 脚本

问题描述

我有这样的文件架构:

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

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

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

标签: pythonbash

解决方案


通过使用 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

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


推荐阅读