Cómo llamar a un archivo cmd dentro de script python

Esta es la secuencia de comandos de Python hará. La pregunta es ¿cómo llamar al archivo cmd externo dentro de la función?

  • Lea un archivo CSV en el directorio.
  • Si el contenido de la sexta columna es igual a ‘aprobado’, se llama a un script de Windows externo ‘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 

Eche un vistazo al módulo de subprocess .

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

Puede especificar a dónde quiere que vayan los resultados / errores (directamente a un archivo o a un objeto similar a un archivo), canalización en la entrada, etc.

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

Esto funciona en ambos tipos de Unix / Windows, ya que envía los comandos al shell. ¡Sin embargo, hay algunas variaciones en los valores devueltos! Compruebe aquí .

  1. Si no necesita la salida del comando, puede usar: os.system (cmd)
  2. La mejor solución es usar:

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