如何解决Python Windows服务的工作目录是什么?
| 我已经使用pywin32成功创建了Python Windows服务。在测试我的应用程序时,我尝试将其打印(没有按我预期的那样工作),并且还将其写入文件。它能够写入文件,但该文件最终位于python库site-packages文件夹中。这似乎是工作目录所在的位置,尽管我不确定为什么?我想知道指定工作目录应该是什么的最佳方法。 我可以使用完整路径名打开文件,还是可以使用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()
解决方法
它们都起作用,这就是您的需求。由于各种原因,最好使用文件名的绝对路径,这样您就不必担心应用程序在哪里运行,您只需知道输出在哪里(哪个是最重要的)。在* nix中,当应用程序没有指定的工作目录时,它们通常在\'/ \'中工作。如果您确实选择在另一个目录
os.chdir(newDir)
中工作,请在致电win32serviceutil.HandleCommandLine
之前执行此操作
我不知道Windows的默认设置,但您可能在站点软件包中的库目录中钉了它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。