python - 对多个目录中的文件、需要提取的文件运行 python 脚本
问题描述
我有这样的文件架构:
A/folder1/file.tar.gz
B/folder2/file.tar.gz
我有一个要在这些文件上运行的 python 脚本
有什么方法可以提取每个文件,然后使用 bash 或 python 中的东西运行我的脚本?
解决方案
通过使用 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
这将大大减少您的代码大小并使其更具可读性。
推荐阅读
- python - PYODBC 查询未运行但在 MSSMS 中工作正常
- javascript - 在编辑器中操作数据时在光标位置插入内容
- mysql - MySQL 中价格的 Dezimal 或整数
- r - R - 删除具有相同值的行和具有相同值组合的行
- angular - Angular - Bootstrap 5“实用程序”未编译
- dart - 参数类型“void Function(String)”不能分配给参数类型“void Function(dynamic)”
- ios - 如何处理暂时不正确的 SafeAreaInsets?
- http - 在 proxy_pass 之前替换 nginx $uri 的第一部分
- javascript - 使用模板文字从对象数组中为变量赋值?
- c# - Unity,在 raycast 之上添加旋转。普通的