通过不同目录多次运行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 文件中检索变量值的最佳方法? [复制]