我使用python和selenium编写了一个脚本,试图注册一个名为puppy play的类。 Crontab每小时运行一次脚本,并将任何输出发送到名为“cronpup.log”的文件。这部分代码在我的python脚本中,它只是检查注册是否成功,然后将结果附加到文件“pup.log”。
# Pup Logger
f = open("pup.log", "a+")
f.write(time.strftime("%Y-%m-%d %H:%M:%S "))
if pups == 1:
f.write("Pups!\n")
elif pups == 0:
f.write("No Pups\n")
else:
f.write("Ruh Roh, Something is wrong\n")
f.close()
这会创建“pup.log”文件,其中的条目如下所示
$ pup.log
2014-10-17 17:49:18 No Pups
2014-10-17 19:37:28 No Pups
我可以从终端运行python脚本,但是当crontab执行脚本时,“pup.log”中没有新的条目。我已经检查了crontab的输出并且什么也没找到。这是crontab的输出
$ cronpup.log
.
----------------------------------------------------------------------
Ran 1 test in 81.314s
OK
似乎crontab只是忽略了代码的那一部分,但这看起来很傻。任何想法如何使这个工作?
答案 0 :(得分:1)
该行
f = open("pup.log", "a+")
是你的问题。 Open正在查看pup.log的当前工作目录,必要时创建它并附加到它。如果你在与python脚本相同的目录中从终端运行,那将显示pup.log。从cron运行时的cwd是作业运行的用户的主目录,因此当从cron运行时,它会将pup.log文件丢弃到系统上的其他位置。
您可以硬编码完整路径,也可以使用
os.chdir(os.path.dirname(os.path.abspath(__file__)))
将当前工作目录设置为python文件所在的目录,或者修改上面的内容以便将pup.log放在你喜欢的地方。