写一个python文件,在shell脚本中运行

最近要复现论文了,发现代码的主函数在.py文件中,运行脚本是在.sh中。

要命的事,我不懂,我怎么debug。

1.新建一个pycharm项目,新建main.py

import argparse


def get_args():
    parser = argparse.ArgumentParser()
    parser.add_argument('-b', '--batch_size', type=int, default=64)
    parser.add_argument('-i', '--image_directory', type=str, default='FGNET/images')
    # 添加其他命令行参数
    return parser.parse_args()


def main():
    args = get_args()

    # 获取命令行参数的值
    batch_size = args.batch_size
    image_directory = args.image_directory
    # 获取其他命令行参数的值

    # 在这里使用参数进行相应的操作
    print(f"batch_size: {batch_size}")
    print(f"image_directory: {image_directory}")
    # 其他操作


if __name__ == '__main__':
    main()

2.新建main.sh文件

#!/bin/bash

python main.py -b 32 -i /path/to/images

echo "操作已完成,按 Enter 键继续..."
read -p ""

其中,脚本在最后一行使用 read -p "" 命令来等待用户的输入。当用户按下 Enter 键后,脚本会退出,并保持命令窗口打开。

shell脚本中添加以下代码,用来检查,上一行是否执行成功。

# 检查上一条命令的返回值

if [ $? -eq 0 ]; then
    echo "脚本执行成功"
else
    echo "脚本执行失败"
fi

项目目录结构:

运行此文件有以下几种方法

a.直接运行main.py文件即可

b.命令行运行main.py:

写一个python文件,在shell脚本中运行_第1张图片

 这个命令其实就是shell脚本中的命令。

c.运行main.sh文件 

写一个python文件,在shell脚本中运行_第2张图片

 

3.我们来试试如果main.py中默认不给出参数,直接运行main.py看看行不行。

仅需修改以下部分:

def get_args():
    parser = argparse.ArgumentParser()
    # parser.add_argument('-b', '--batch_size', type=int, default=64)
    parser.add_argument('-b', '--batch_size', type=int)
    # parser.add_argument('-i', '--image_directory', type=str, default='FGNET/images')
    parser.add_argument('-i', '--image_directory', type=str)
    # 添加其他命令行参数
    return parser.parse_args()

写一个python文件,在shell脚本中运行_第3张图片

还可以运行。

我们再改一下代码:

在主函数中添加一行

print(f"batch_size+6: {batch_size+6}")

直接运行main.py就报错了。

写一个python文件,在shell脚本中运行_第4张图片

 此时试试命令行运行:

写一个python文件,在shell脚本中运行_第5张图片

 运行.sh文件看看

 写一个python文件,在shell脚本中运行_第6张图片

 好像懂了一点了。

你可能感兴趣的:(Python,pytorch,python,开发语言)