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

news2024/12/22 19:42:33

最近要复现论文了,发现代码的主函数在.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文件看看

 

 好像懂了一点了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603745.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python模块的优势和局限性

Python模块的优势和局限性 引言 Python作为一门高级编程语言,被广泛应用于各种领域。其中,Python内置的模块系统,为Python在编程中的灵活性和可扩展性提供了很大的优势。在本文中,我们将探讨Python模块的优势和局限性及其对Web优…

chatgpt赋能python:用Python剔除重复内容提升SEO效果

用Python剔除重复内容提升SEO效果 SEO是指通过优化网站结构和内容,在搜索引擎中获得更高的排名,从而提升网站流量和曝光度的一种网络营销方式。网站内容是SEO工作的重要组成部分,而剔除重复的内容对于SEO效果的提升有着重要的作用。本文将介…

chatgpt赋能python:Python制作人机交互界面:完美融合技术和用户体验

Python 制作人机交互界面:完美融合技术和用户体验 随着人工智能和互联网技术的发展,人机交互一直是非常热门的话题。Python 作为一门功能强大,应用广泛的高级编程语言,同样在这个领域发挥了重要作用。Python 制作人机交互界面&am…

【列表迭代器和增强for循环】

列表迭代器和增强for循环 1.列表迭代器 ListIterator:列表迭代器 通过List集合的listIterator()方法得到,所以说它是List集合特有的迭代器用于允许程序员沿任一方向遍历列表的列表迭代器,在迭代期间修改列表,并获取列表中迭代器…

SAP ABAP smartforms 创建并实现调用源码(下)

SAP ABAP smartforms 创建并实现调用源码(上) smartforms 入门详见上一篇博文。 一:报表程序调用 smartforms 示例:报表选中一行,将这行机相关数据通过表单打印出来。实际例子:采购订单表,销售订单。 调…

低代码平台iVX

一、ivx是啥 编写复杂的代码仍然是一项具有挑战性的任务。然而,现在有一种令人振奋的解决方案出现了——iVX,这是一种创新的可视化编程语言,为每个人提供快速掌握的能力。 iVX 是一个 “零代码” 的可视化编程语言,“零代码” 是…

基于flask的web应用开发——认识@app.route

目录 0. 前言1. flask简介2. 编写你的第一个网页3. 运行效果查看4. 本节小结 0. 前言 本专栏以基于flask实现web前端,即制作一个自己的网页 本节学习路由装饰器app.route() 操作系统:Windows10 专业版 开发环境:Pycahrm Comunity 2022.3 …

chatgpt赋能python:Python加R:让数据科学更加高效

Python加R:让数据科学更加高效 在过去的几年里,Python和R成为数据科学领域中最受欢迎的编程语言。它们提供了丰富的库和工具,帮助从事数据分析和机器学习的人们更加高效地完成任务。然而,Python和R都有其各自的优缺点。 Python的…

代理IP基础、实际运用,以及如何获取

代理IP是指通过一个中间服务器来转发用户的网络请求,从而在网络上隐藏用户的真实IP地址,或者绕过网络限制以达到访问特定内容的目的。下面是代理IP的一些基础知识: 1、代理IP的分类:代理IP可以分为普匿代理IP、透明代理IP和高匿代…

互联网医院牌照申请的资料以及流程

随着互联网的发展,互联网医院逐渐成为一个热门话题,越来越多的医疗机构开始尝试在互联网上提供医疗服务。然而,想要在互联网上开展医疗服务,必须获得互联网医院牌照。本文将介绍互联网医院牌照申请需要的资料、条件,以…

算法提高-搜索-DFS之剪枝与优化

DFS之剪枝与优化 DFS之剪枝与优化AcWing 165. 小猫爬山AcWing 166. 数独AcWing 167. 木棒AcWing 168. 生日蛋糕 DFS之剪枝与优化 AcWing 165. 小猫爬山 DFS的五种剪枝方法 (1)优化搜索顺序 (2)排除等效冗余 (3&#…

chatgpt赋能python:Python删除目录:如何在项目中正确删除文件夹?

Python 删除目录:如何在项目中正确删除文件夹? 在使用Python语言进行程序开发的过程中,可能会需要删除不再需要的目录,例如缓存和日志文件夹。然而,删除目录需要小心谨慎,避免误删除重要文件或目录。在本文…

chatgpt赋能python:Python列表自动排序

Python列表自动排序 Python是一种流行的编程语言,它有很多有用的内置函数和数据结构。其中一个最常用的数据结构是列表。在Python中,列表是一个有序的集合,可以存储多种类型的元素。列表不仅仅是一个数据结构,它还有一些有用的方…

Flink standalone 集群会话模式部署搭建

环境准备 1、Centos7集群环境搭建 2、flink-1.17.0-bin-scala_2.12.tgz 安装包,下载地址 规划 服务器角色iphadoop01JobManager TaskManager192.168.140.132hadoop02TaskManager192.168.140.133hadoop03TaskManager192.168.140.134 安装 1、下载 flink-1.17.0-…

【Unity3D】边缘检测特效

1 边缘检测原理 边缘检测的原理是:检测每个像素周围的像素亮度差,如果亮度差异较大,就将该像素识别为边缘,并进行边缘着色。 使用过卷积神经网络(CNN)的读者,一定知道卷积运算,笔者之…

储能基础知识【一】

储能基础知识【一】 1、基础名词、概念、对应的英文单词、系统组成2、储能电池系统组成图3、性能指标 1、基础名词、概念、对应的英文单词、系统组成 电池储能系统(Battery Energy Storage System, BESS);电芯(Battery Cell&…

总结887

学习目标: 周目标:强化强3讲,英语背3篇文章并回诵,检测,一套数学模拟题 每日必复习(5分钟) 复习第四讲方程组 学习内容: 暴力英语:背诵《happiness is a journey》每日…

《HTTPS协议原理》

【一】https协议是啥子? https也是一个应用层协议,实在http协议的基础上,引入了一个加密层,http协议的内容都是按照文本的方式进行明文传输的, 这就导致了在传输的过程中出现一些被篡改的情况。 【二】啥是加密&…

操作系统复习3.1.0-内存

内存 程序是由内存放到CPU才可处理,前面一直有提到外存、内存,外存I/O速度十分慢,而内存I/O速度快,CPU I/O速度也快。 因此内存是缓和外存和CPU间I/O速率差异问题 为区分并发环境下程序数据存放地方,就给内存的存储单…

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别?

前端 js 栈内存和堆内存 基本数据类型和复杂数据类型的区别? 先了解一下JavaScript 数据类型有哪些? javaScript 中有8种基本的数据类型:7种为基本数据类型,而Object 为复杂数据类型 基本数据类型(原始数据类型&#…