最近要复现论文了,发现代码的主函数在.py文件中,运行脚本是在.sh中。
要命的事,我不懂,我怎么debug。
1.新建一个pycharm项目,新建main.py
import argparsedef 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_sizeimage_directory = args.image_directory# 获取其他命令行参数的值# 在这里使用参数进行相应的操作print(f"batch_size: {batch_size}")print(f"image_directory: {image_directory}")# 其他操作if __name__ == '__main__':main()
2.新建main.sh文件
#!/bin/bashpython main.py -b 32 -i /path/to/imagesecho "操作已完成,按 Enter 键继续..."
read -p ""
其中,脚本在最后一行使用 read -p ""
命令来等待用户的输入。当用户按下 Enter 键后,脚本会退出,并保持命令窗口打开。
shell脚本中添加以下代码,用来检查,上一行是否执行成功。
# 检查上一条命令的返回值if [ $? -eq 0 ]; thenecho "脚本执行成功"
elseecho "脚本执行失败"
fi
项目目录结构:
运行此文件有以下几种方法
a.直接运行main.py文件即可
b.命令行运行main.py:
这个命令其实就是shell脚本中的命令。
c.运行main.sh文件
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()
还可以运行。
我们再改一下代码:
在主函数中添加一行
print(f"batch_size+6: {batch_size+6}")
直接运行main.py就报错了。
此时试试命令行运行:
运行.sh文件看看
好像懂了一点了。