如何在python脚本中调用cmd文件

时间:2011-12-06 21:43:38

标签: python

这是python脚本会做的。问题是如何在函数中调用外部cmd文件?

  • 阅读目录中的CSV文件。
  • 如果第6列中的内容等于“已批准”,则调用 外部Windows脚本'TransferProd.cmd'

def readCSV(x):
    #csvContents is a list in the global scope that will contain lists of the  
    #items on each line of the specified CSV file
    try:
        global csvContents
        file = open(csvDir + x + '.csv', 'r')      #Opens the CSV file
        csvContents = file.read().splitlines()     #Appends each line of the CSV file to csvContents
        #----------------------------------------------------------------------
        #This takes each item in csvContents and splits it at "," into a list.
        #The list created replaces the item in csvContents
        for y in range(0,len(csvContents)):
            csvContents[y] = csvContents[y].lower().split(',')
        if csvContents[y][6] == 'approved':
            ***CALL TransferProd.cmd***
            file.close()
        return
    except Exception as error:
        log(logFile, 'An error has occurred in the readCSV function: ' + str(error))
        raise

3 个答案:

答案 0 :(得分:3)

查看subprocess module

import subprocess
p = subprocess.Popen(['TransferProd.cmd'])

您可以指定输出/错误的位置(直接指向文件或文件类对象),输入管道等。

答案 1 :(得分:1)

import os
os.system('TransferProd.cmd')

这适用于unix / windows风格,因为它将命令发送到shell。但是返回值有一些变化!检查here

答案 2 :(得分:0)

  1. 如果您不需要输出命令,可以使用:os.system(cmd)
  2. 更好的解决方案是使用:

    from subprocess import Popen, PIPE
    proc = Popen(cmd, shell = True, close_fds = True)
    stdout, stderr = proc.communicate()