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

4 投票
3 回答
9844 浏览
提问于 2025-04-17 07:50

这个Python脚本的功能是这样的。问题是如何在函数里调用外部的cmd文件呢?

  • 首先,它会读取目录中的一个CSV文件。
  • 然后,如果第六列的内容是'approved',就会调用一个外部的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
  1. 如果你不需要这个命令的输出结果,可以用:os.system(cmd)
  2. 更好的方法是使用:

    from subprocess import Popen, PIPE
    proc = Popen(cmd, shell = True, close_fds = True)
    stdout, stderr = proc.communicate()
    
1
import os
os.system('TransferProd.cmd')

这个方法在Unix和Windows系统上都能用,因为它是把命令发送给了系统的命令行。虽然返回的结果可能会有一些不同,但大体上是可以的!你可以在这里查看详细信息。

4

看看这个subprocess模块

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

你可以指定输出或错误信息要去哪里(直接写入文件或者写入一个像文件的对象),还可以输入数据等等。

撰写回答