Python 在pywin32中使用DeviceCapabilities

Python 在pywin32中使用DeviceCapabilities,python,printing,pywin32,Python,Printing,Pywin32,我想用python更换打印机的纸盘。我尝试使用以下代码检索有关打印机及其值的信息: import win32print x = win32print.DeviceCapabilities('Name of my printer', '192.168.x.x', DC_BINS) print (x) DC_箱子应该给我一个int序列。每个属于不同的托盘。然而,当我尝试运行这个程序时,程序说“DC_BINS”没有定义。我做错了什么?我是python新手。您的代码已更正: 导入win32print

我想用python更换打印机的纸盘。我尝试使用以下代码检索有关打印机及其值的信息:

import win32print
x = win32print.DeviceCapabilities('Name of my printer', '192.168.x.x', DC_BINS)
print (x)
DC_箱子应该给我一个int序列。每个属于不同的托盘。然而,当我尝试运行这个程序时,程序说“DC_BINS”没有定义。我做错了什么?我是python新手。

您的代码已更正:

导入win32print
导入win32con
x=win32print.DeviceCapabilities('我的打印机名称','192.168.x.x',win32con.DC\u bin)
打印(x)
列出所有本地和远程打印机及其功能的代码:

import win32print
from win32con import *

DC_CONSTANTS = [
    DC_BINNAMES, DC_BINS, DC_COLLATE, DC_COLORDEVICE, DC_COPIES, DC_DRIVER,
    DC_DUPLEX, DC_ENUMRESOLUTIONS, DC_EXTRA, DC_FIELDS,
    DC_FILEDEPENDENCIES, DC_MAXEXTENT, DC_MEDIAREADY, DC_MEDIATYPENAMES,
    DC_MEDIATYPES, DC_MINEXTENT, DC_ORIENTATION, DC_NUP, DC_PAPERNAMES,
    DC_PAPERS, DC_PAPERSIZE, DC_PERSONALITY, DC_PRINTERMEM, DC_PRINTRATE, DC_PRINTRATEPPM,
    DC_PRINTRATEUNIT, DC_SIZE, DC_STAPLE, DC_TRUETYPE, DC_VERSION,
]


def DC_INFO(constant):
    for a_global in globals().keys():
        if a_global.startswith("DC_") and globals().get(a_global) == constant:
            return a_global
    return "DC_UNKONWN"


for printer in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS):
    print printer
    for constant in DC_CONSTANTS:
        try:
            x = win32print.DeviceCapabilities(printer[2], '', constant)
            print "\t", DC_INFO(constant), x
        except:
            pass
我建议为python使用IDE,好的IDE会标记未知符号并建议从何处导入这些符号(就像PyCharm一样)。

您的代码已更正:

导入win32print
导入win32con
x=win32print.DeviceCapabilities('我的打印机名称','192.168.x.x',win32con.DC\u bin)
打印(x)
列出所有本地和远程打印机及其功能的代码:

import win32print
from win32con import *

DC_CONSTANTS = [
    DC_BINNAMES, DC_BINS, DC_COLLATE, DC_COLORDEVICE, DC_COPIES, DC_DRIVER,
    DC_DUPLEX, DC_ENUMRESOLUTIONS, DC_EXTRA, DC_FIELDS,
    DC_FILEDEPENDENCIES, DC_MAXEXTENT, DC_MEDIAREADY, DC_MEDIATYPENAMES,
    DC_MEDIATYPES, DC_MINEXTENT, DC_ORIENTATION, DC_NUP, DC_PAPERNAMES,
    DC_PAPERS, DC_PAPERSIZE, DC_PERSONALITY, DC_PRINTERMEM, DC_PRINTRATE, DC_PRINTRATEPPM,
    DC_PRINTRATEUNIT, DC_SIZE, DC_STAPLE, DC_TRUETYPE, DC_VERSION,
]


def DC_INFO(constant):
    for a_global in globals().keys():
        if a_global.startswith("DC_") and globals().get(a_global) == constant:
            return a_global
    return "DC_UNKONWN"


for printer in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS):
    print printer
    for constant in DC_CONSTANTS:
        try:
            x = win32print.DeviceCapabilities(printer[2], '', constant)
            print "\t", DC_INFO(constant), x
        except:
            pass
我建议为python使用IDE,好的IDE将标记未知符号并建议从何处导入这些符号(就像PyCharm一样)