zoukankan      html  css  js  c++  java
  • 使用 bat 批处理运行 python

    使用 bat 批处理运行 python

    最近实习处理数据,在一个工作流里面需要同时使用到 python2 和 python3,这样我就不能使用一个 main 文件把所有步骤串起来一键执行,多了很多人工操控的步骤。

    bat 打开了新世界的大门。

    这篇笔记讲讲用到的基本 bat 语法,以及如何使用它来把 python 程序串起来。

    bat 基本语法

    在此之前,大概解释一下。bat 就是批处理程序(不确定是不是可以在 linux 上运行)。

    bat 注释

    在一行代码前面加上Rem就代表注释,类似 python 中的 #

    使用示例

    Rem Echo test
    

    打印到控制台

    在需要打印的文字前面加上ECHO就代表打印,类似 python 中的 print

    需要注意的是,bat中的字符串是不需要引号的。

    使用示例

    ECHO The best language of world is Python.
    

    申明变量

    使用set来申明变量。

    比如申明一个名为list的数组

    set list=1 2 3 4
    set list=beijing shanghai changsha
    

    FOR循环

    使用示例。打印list数组中的每一个元素。

    For %%A IN (%list%) DO (
    	Rem 这里开始是循环体
    	ECHO %%A
    )
    

    使用 bat 来执行 python 程序

    其实就是平时我们在命令行运行 python 程序一样。

    python test.py
    python2 test.py
    python3 test.py
    

    如果要指定 python 解释器,那就带上解释器的完整路径。比如

    C:Usersivyanaconda3python.exe test.py
    

    (当然,python 程序也可以是完整路径。其实建议使用完整路径,不然 bat 里还要切换工作目录,比较麻烦。)

    给 python 程序传参数

    首先,python 程序里面要设置接收参数。这个使用 sys 包就可以做到。

    import sys
    
    print(sys.argv[1]) # 第一个参数 (第0个参数是 python 文件路径)
    print(sys.argv[2]) # 第二个参数
    

    然后,在 bat 里直接在命令后加上对应的参数就好

    C:Usersivyanaconda3python.exe test.py 参数1 参数2
    

    完整示例

    @echo off
    
    Rem 申明 list 数组
    set list=beijing shanghai changsha
    
    Rem 循环 list 数组
    For %%A IN (%list%) DO(
    	C:Usersivyanaconda3python.exe test.py %%A
    	c:Python27ArcGIS10.7python.exe test2.py %%A
    	ECHO *********** %%A done ****************
    )
    
    Rem 循环完不要直接退出程序,等待 check 一下
    pause
    
  • 相关阅读:
    Code::blocks 使用c++ long double类型出错
    数论四大定理
    线性基
    win7 下强制删除文件
    C++数组指针的引用
    学习方法
    MySQL的ON DUPLICATE KEY UPDATE用法
    MVCC
    RabbitMQ中的Connection 和 Channel
    myisam和innodb的比较
  • 原文地址:https://www.cnblogs.com/IvyWong/p/14759072.html
Copyright © 2011-2022 走看看