2011-04-12 49 views
2

我已经使用pywin32成功创建了Python Windows服务。在测试我的应用程序时,我尝试打印它(这不符合我的预期),并且我还将它写入文件。它能够写入一个文件,但该文件最终在Python库site-packages文件夹中。这似乎是工作目录的位置,但我不确定为什么?我想知道指定工作目录应该是什么的最佳方法。Python Windows服务的工作目录是什么?

我可以用完整的路径名打开文件,或者我可以使用os.cwd?最佳做法是什么?

这是构成我的Windows服务的两个文件。

import os 
import sys 
import win32service 
import win32serviceutil 
from twisted.internet import reactor 
import xpress 


class XPressService(win32serviceutil.ServiceFramework): 

    _svc_name_ = 'XPress' 
    _svc_display_name_ = 'XPress Longer Name' 

    def SvcStop(self): 
     self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING) 
     reactor.callFromThread(reactor.stop) 

    def SvcDoRun(self): 
     xpress.main() 
     reactor.run(installSignalHandlers=False) 


if __name__ == "__main__": 
    win32serviceutil.HandleCommandLine(XPressService) 

下面是通过上述脚本导入的“xpress.py”。

import datetime 

def main(): 
    with open('times', 'a') as f: 
     print str(datetime.datetime.now()) 
     f.write(str(datetime.datetime.now())) 

if __name__ == '__main__': 
    main() 

回答

2

他们都工作,这是你的需求。出于各种原因,最好使用文件名的绝对路径,这样您不必担心应用程序在哪里工作,只需知道输出的位置(哪个最重要)。在* nix中,应用程序通常在没有指定工作目录的情况下使用'/'。如果你选择在另一个目录是os.chdir(newDir)工作,做到这一点,你叫win32serviceutil.HandleCommandLine

我不知道Windows默认之前,但你可能与库在site-packages目录钉它。

相关问题