python - python,从目录中读取文件名,使用bash脚本中的字符串
问题描述
我正在编写一个 bash 脚本(例如program.sh
),其中我正在调用一个从目录中读取文件列表的 python 代码。
python脚本(read_files.py
)如下:
import os
def files(path):
for filename in os.listdir('/home/testfiles'):
if os.path.isfile(os.path.join('/home/testfiles', filename)):
yield filename
for filename in files("."):
print (filename)
现在我想保留字符串文件名并在 bash 脚本中使用它。
例如
program.sh
:
#!/bin/bash
python read_files.py
$Database_maindir/filename
.
.
.
我如何保留字符串文件名(目录中的文件名)并编写一个循环以便在 bash 脚本中为每个文件名执行命令?
解决方案
问题中的 Python 脚本没有做任何 Bash 本身无法完成的事情,而且更简单、更容易。改用简单的本机 Bash:
shopt -s nullglob
for path in /home/testfiles/*; do
if [[ -f "$path" ]]; then
filename=$(basename "$path")
echo "do something with $filename"
fi
done
如果 Python 脚本做的事情比你在问题中写的要多,例如它做了一些复杂的计算并吐出文件名,这在 Bash 中会很复杂,那么你确实有一个合法的用例来保留它。在这种情况下,您可以像这样遍历输出中的行:
python read_files.py | while read -r filename; do
echo "do something with $filename"
done
推荐阅读
- c++ - 访问类树层次结构中的对象时避免使用空指针
- python - Flask在开发模式下无法运行,找不到flask模块
- ajax - 为什么 Symfony 控制器返回模板被和标签剪断?
- reactjs - 尝试将 JSON 文件导入 React 但不工作
- redux-form - 如何在 redux-form 中提交无效表单?甚至有可能吗?
- angular - RXJS SwitchMap 在取消后不重复请求
- homebrew - 运行 brew services list 命令的问题
- mysql - xtrabackup 恢复单个数据库?
- c - 如何创建一个返回另一个函数的函数,在 C 中隐含包含给定参数?
- java - 使用 LocalDate 将一个日期更改为另一种日期格式