通过不同目录多次运行python脚本的最佳方法?使用视窗

Posted

技术标签:

【中文标题】通过不同目录多次运行python脚本的最佳方法?使用视窗【英文标题】:Best way to run a python script multiple times through different directories? Using Windows 【发布时间】:2020-12-27 07:04:04 【问题描述】:

我有一个 python 脚本,它在与使用 sys.argv 的脚本位于同一目录中的输入文件上运行:

    def main():
        input_1 = sys.argv[1]
        input_2 = sys.argv[2]
        output_file = sys.argv[3]
    ...

我怎样才能让这个脚本在这样的结构中的每个目录上运行多次?我希望它在每个数据文件夹上运行以获取类型 1 和类型 2 数据以在脚本中使用 x 次,其中 x 是数据文件夹的数量。我会使用 bash,另一个 python 脚本,还是别的东西?我从来没有为另一个脚本编写过脚本,所以任何事情都有帮助。谢谢

 >folder
    >my_python_script.py
    >data
        >data_1
            >type_1
                data_type_1.txt
            >type_2
                data_type_1.txt
        >data_2
            >type_1
                data_type_1.txt
            >type_2
                data_type_1.txt

编辑:脚本还将两个输入文件写入输出文件。此输出文件与脚本在同一目录中创建,并且输出名称将根据脚本运行的目录而更改,以免覆盖相同的输出文件。所以如果它在 3 个目录上运行,就会有 3 种不同的输出。

使用 Windows

我像这样在 cmd 中运行脚本:

python script.py 'input_1.txt' 'input_2.txt' 'out.txt'

【问题讨论】:

xargs 或 parallel 可能会有所帮助。不过,我在这两个方面都不够专业,无法写出答案。 您是要使用 bash 还是 cmd 运行,还是想要在两者上运行的东西?请提供包含所有三 (3) 个参数的示例命令行。 【参考方案1】:

在 bash 中,我会使用 find 命令查找所有 data_? 目录,然后遍历它们并调用 python 脚本:

SCRIPT=$PWD/my_python_script.py
for data_dir in $(find . -name 'data_?')
do
    cd $data_dir
    $SCRIPT
    cd - > /dev/null  # Returns to top dir
done

讨论

脚本将遍历目录 对于每个目录,它将 cd 进入并运行脚本 脚本运行后,cd 回到顶层文件夹 SCRIPT 变量指向脚本的绝对路径,因此无论当前目录如何都会找到它。

更新

我不完全理解你的问题,所以我猜你想传递 data_1/data_type_1.txt 作为第一个参数和 data_2/data_type_1.txt 作为第二个参数:

SCRIPT=$PWD/my_python_script.py
for data_dir in $(find . -name 'data_?')
do
    cd $data_dir
    $SCRIPT data_1/data_type_1.txt data_2/data_type_2.txt
    cd - > /dev/null  # Returns to top dir
done

至于第三个参数,我猜不出来。

【讨论】:

如何将 data.txt 文件的名称/路径传递给 python 脚本? python 脚本将输入文件的名称作为参数。我还编辑了问题,包括处理为每个目录制作唯一的输出文件 第三个参数是输出。我在帖子的编辑中添加了我如何正常运行脚本(抱歉有任何混淆)。输出文件名应根据脚本正在处理的目录而更改。假设您在目录 a、b、c 上运行...您的输出可能类似于 a_output.txt、b_output.txt、...

以上是关于通过不同目录多次运行python脚本的最佳方法?使用视窗的主要内容,如果未能解决你的问题,请参考以下文章

在具有不同输入的 1x exe 中同时多次运行 python 脚本

如何使 Python 脚本像 Linux 中的服务或守护程序一样运行

通过另一个 python 脚本从 python 文件中检索变量值的最佳方法? [复制]

在 PHP 中,使用 CLI 时确保当前工作目录与脚本相同的最佳方法

从 python 脚本返回值的最佳方法

分多个阶段或多次自动化脚本