我应该使用什么库来连接到Windows上的python中的odbc?有关odbc的pywin32有什么好的选择吗?
我正在寻找记录良好,健壮,积极维护等等的东西pyodbc看起来很好 - 还有其他吗?
我需要在Python脚本中连接到Exchange邮箱,而不使用本地计算机上的任何配置文件设置(包括使用Outlook).如果我使用win32com创建MAPI.Session,我可以使用现有的配置文件登录(使用Logon()方法),但我想提供用户名和密码.
这可能吗?如果是这样,有人可以提供示例代码吗?我更喜欢它只使用标准库和pywin32包.遗憾的是,无法为Exchange服务器启用IMAP访问(然后使用imaplib).
如果有必要:所有脚本将执行的操作是连接到邮箱,并运行收件箱中的邮件,检索内容.如果我能在第一时间获得连接,我可以为此编写代码!
有关Outlook的说明:Outlook将安装在本地计算机上,但它没有任何帐户设置(即所有相应的库都可用,但我需要独立于Outlook内部的任何设置运行).
海兰@大家,
我尝试在Windows 7下使用python 3.4.2通过pip(1.5.6)安装pywin32,但我总是得到以下错误消息:
Could not find any downloads that satisfy the requirement pywin32
Some externally hosted files were ignored (use --allow-external pywin32 to all
ow).
Cleaning up...
No distributions at all found for pywin32
Storing debug log for failure in C:\Users\tonka\pip\pip.log
Run Code Online (Sandbox Code Playgroud)
使用pip的所有其他安装工作绝对正常.在pypi.org上,有一个pywin32的包,所以不要真正理解为什么会这样.
我也试过这个--allow-external标志,但后来我得到了以下错误
Could not find any downloads that satisfy the requirement pywin32
Some insecure and unverifiable files were ignored (use --allow-unverified pywi
n32 to allow).
Cleaning up...
No distributions at all found for pywin32
Storing debug log for …Run Code Online (Sandbox Code Playgroud) 出于低级目的,我需要从任意地址构造一个ctypes指针,以整数形式给出.例如:
INTP = ctypes.POINTER(ctypes.c_int)
p = INTP(0x12345678) # i *know* this is the address
Run Code Online (Sandbox Code Playgroud)
但所有这些尝试都会导致
TypeError: expected c_long instead of int
Run Code Online (Sandbox Code Playgroud)
我能做些什么来克服这个问题吗?如果有人想知道我为什么需要这个,那么就是为了OVERLAPPED从一个win32file.PyOVERLAPPED用于集成ctypes暴露的函数和win32file包装的API 来提取结构.
谢谢,
-Tomer
如何从我的Python脚本中获取Windows特殊文件夹,如My Documents,Desktop等?我需要win32扩展吗?
它必须适用于Windows 2000到Windows 7.
我使用With Extended Service Notifications示例代码在python中为Windows XP +编写了一项服务.它非常适合检测用户登录/注销锁定屏幕和其他事件.问题是它永远不会执行关闭事件,并在重启/关闭时正常停止服务.它通过登录/注销事件保持活动状态,并在重新启动后再次启动.任何帮助,将不胜感激.
我不想使用RegisterServiceCtrlHandlerEx并处理控制台信号,如果我能帮助它 - 服务内置了这个功能,我只是以某种方式破坏了它.
这是代码:
from os.path import splitext, abspath
from sys import modules
import win32serviceutil
import win32service
import win32event
import win32api
import win32security
import win32ts
class Service(win32serviceutil.ServiceFramework):
_svc_name_ = '_unNamed'
_svc_display_name_ = '_Service Template'
def __init__(self, *args):
win32serviceutil.ServiceFramework.__init__(self, *args)
self.log('Initializing Service')
self.stop_event = win32event.CreateEvent(None, 0, 0, None)
self.server = None
def log(self, msg):
import servicemanager
servicemanager.LogInfoMsg(str(msg))
def logErr(self, msg):
import servicemanager
servicemanager.LogErrorMsg(str(msg))
def logWarn(self, msg):
import servicemanager
servicemanager.LogWarningMsg(str(msg))
def sleep(self, sec):
win32api.Sleep(sec*1000, …Run Code Online (Sandbox Code Playgroud) 这是我的代码,我找到了许多VBA,.NET框架的答案,并且非常奇怪.执行此操作时,Excel将关闭.
from win32com.client import DispatchEx
excel = DispatchEx('Excel.Application')
wbs = excel.Workbooks
wbs.Close()
excel.Quit()
wbs = None
excel = None # <-- Excel Closes here
Run Code Online (Sandbox Code Playgroud)
但是,当我执行以下操作时,它不会关闭.
excel = DispatchEx('Excel.Application')
wbs = excel.Workbooks
wb = wbs.Open('D:\\Xaguar\\A1.xlsm')
wb.Close(False)
wbs.Close()
excel.Quit()
wb = None
wbs = None
excel = None # <-- NOT Closing !!!
Run Code Online (Sandbox Code Playgroud)
我在Stack Overflow问题中找到了一些可能的答案.传统方法不起作用.问题是不是Python,我找不到Marshal.ReleaseComObject和GC.我查看了所有演示...site-packages/win32com和其他演示.
如果我能获得PID并杀死它,即使它也不会打扰我.
我在Kill进程中找到了一个基于窗口名称(win32)的解决方法.
可能不是正确的方法,但是工作环境是:
def close_excel_by_force(excel):
import win32process
import win32gui
import win32api
import win32con …Run Code Online (Sandbox Code Playgroud) 我正在寻找良好的资源来开始使用pywin32.我没有找到关于它的教程,书籍或博客的方式.我希望能够使用python自动执行一些常见的重复Microsoft Excel和Word任务(例如打开word doc并搜索和替换电子表格中的数据).
我发现了很多对PyWin32的引用(在google和StackOverflow上),但它总是处于更高级别.我只想找到一些记录良好的资源,帮助我加快速度,这样我就可以使用我发现的其他帖子了.
我是python和python win32扩展的新手,可以在http://python.net/crew/skippy/win32/上找到,但是我无法在线或在安装目录中找到任何关于win32扩展提供的文档.这些信息在哪里?
安装后我想出了几个错误:
pywin32-217.win32-py2.7
我最近将ArcGIS升级到10.1,它使用的是Python 2.7(而不是ArcGIS 10.0附带的2.6)
当我在Windows 7 64位上运行安装程序时,它会安装,但会抛出以下消息:
在文件对象析构函数中关闭失败:
缺少sys.excepthook
丢失了sys.stderr
我有一个简单的python脚本从包含.pdf文件的文件夹打印到打印机,这些文件在升级之前有效
import arcpy, glob, win32api, os
pdfLoc = arcpy.GetParameterAsText(0)
try:
copies = int(arcpy.GetParameter(1))
except:
copies = 1
for pdfname in glob.glob(os.path.join(pdfLoc, "*.pdf")):
fullpath = os.path.join(pdfLoc, pdfname)
for copy in range(copies):
win32api.ShellExecute(0, "print", pdfname, None, ".", 0)
del fullpath
del pdfname
del pdfLoc
Run Code Online (Sandbox Code Playgroud)
现在,当我运行脚本时,我收到以下错误:
回溯(最近一次调用最后一次):文件"Z:\ ESRI\Python\Solstice_Tools_Scripts\Printer_Tools\Batch_Print_From_PDF_Only\BatchprintFromPDFOnly_Test.py",第34行,在win32api.ShellExecute(0,"print",pdfname,None,".", 0)错误:(31,'ShellExecute','连接到系统的设备无法运行.')
无法执行(BatchPrintFromPDFOnly2).
我一直在谷歌搜索并尝试了一些解决方案,比如在故障排除模式下运行可执行文件,但错误仍然存在.谁能提出可能导致这种情况的人?
作为旁注,我将公司中的4台计算机升级到新版本的python和ArcGIS,其中只有一台是抛出此错误.其余的工作正常.
谢谢,迈克