最近要复现论文了,发现代码的主函数在.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:
这个命令其实就是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文件看看
好像懂了一点了。