首页 > 解决方案 > 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 脚本中为每个文件名执行命令?

标签: pythonbash

解决方案


问题中的 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

推荐阅读