如何使用python写批处理

不会用bat写批处理,bat命令太复杂,怎么办?可以使用python替代bat写批处理

1. 为什么需要批处理

我手头上有一个影像波段融合的控制台小程序Fusion.exe,需要打开cmd,然后需要在cmd中输入

融合程序路径  影像宽度w  影像高度h  波段数n  影像1路径  影像2路径……影像n路径  融合后影像路径

如果只需要波段融合成一副影像,那直接在控制台调用程序并输入参数即可。但这次需要将236幅每6个波段的影像进行波段融合,手动一次次来的话,我选择狗带。
要是把在cmd输入的参数换成变量就好了,我们可以通过for循环和变量可以达到让cmd重复执行相似的命令。

2. 使用python进行批处理

我们这里主要运用了os.system()函数。os模块中的system()函数可以方便地运行其他程序或者脚本。相当于在Windows的cmd窗口中输入的命令。
主要需要4个步骤:

  • 1. 导入os模块
  import os
  • 2. 输入要执行的命令
  command = 'ipconfig' #要执行的命令(这里以命令ipconfig为例),相当于直接在windows的cmd窗口中输入的命令。
  • 3. 调用os.system()函数
os.system(command) #调用os.system()函数,参数为上面定义的command.
  • 4. for循环1-3 步骤
    将代码保存为 自定义文件名.py ,在cmd执行下面命令。
python 自定义文件名.py #注意:安装python时,需要设置环境变量

3. 一个批处理的例子

下面我将叙述一个例子并附上代码来详细说明如何使用python进行批处理

3.1 例子的背景

  • 有一个带参数的图像波段融合程序,该程序需要在控制台运行。
  • 有6个文件夹,分别保存了236张影像的6个波段。影像文件的命名方式为TTC0*.rawTTC1*.rawTTC2*.rawTTC3*.rawTTC4*.rawTTC5*.raw分别表示1-6波段的影像。

3.2 方法和代码

思想:使用python遍历文件保存为变量,command中使用变量,for循环调用os.system(command)

  1. 遍历第一个文件夹中*.raw格式文件,将文件名列表赋给一个变量。
  2. 根据上述变量和.raw格式的命名规则生成其他5个波段影像的文件访问路径。
  3. 定义command变量
  4. 调用os.system(command)
  5. 重复执行1-4步骤,for循环
import os
filepath = 'D:\\第一波段所在的文件夹\\0\\20m'  #定义第一波段的路径
resultpath = 'D:\\Fusion' #定义融合后影像存储路径
filelist = os.listdir(filepath) #遍历文件夹所有的文件
file_raw_list = filter(lambda filename:filename[-4:] == '.raw', filelist) #筛选出格式为.raw的文件
for i in range(len(file_raw_list)): #循环遍历第一波段文件夹中raw格式文件,生成其他波段影像的路径
    fileon0 = file_raw_list[i]
    file_path = [] #6波段影像的路径
    #根据命名规则和第一波段文件名得到6个波段影像的文件名和路径,存储在表file_path中
    for i in range(6):
        fileonname = fileon0[0:3] + str(i) + fileon0[4:]#各波段影像文件名,将文件名中的0替换为0-5
        fileonpath = filepath[0:-5] + str(i) + filepath[-4:]#各波段影像文件夹路径,将文件夹中的0替换为0-5
        file_path.append(fileonpath+'\\'+fileonname)#生成6个波段影像的访问路径,例:‘D:\\第一波段所在的文件夹\\1\\20m\\TTC1*(图像标号).raw’

    #输入要执行的命令(按照控制台程序的格式输入参数),相当于直接在windows的cmd窗口中输入的命令
    command = r'D:\控制台程序所在的文件夹\Fusion.exe' + ' ' + file_path[1] + ' ' + file_path[2] + ' ' + file_path[3] + ' ' + file_path[4] + ' ' \
    + file_path[0] + ' ' + file_path[5] + ' '+ resultpath+'\\'+ fileon0[0:-4]+'.tiff'
    os.system(command) #最后调用os.system()函数

注意:文件夹的名字最好不要带中文。

写得太啰嗦了,又不在重点上,抛砖引玉。

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值