我有一个像这样的文件体系结构:
A/folder1/file.tar.gz
B/folder2/file.tar.gz
我有一个要在这些文件上运行的python脚本
有什么方法可以提取每个文件,然后使用bash或python中的某些东西运行脚本?
答案 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