我在Google中启动了一个计算引擎实例,在主dir中创建了一个名为"python“的文件夹,在该dir中创建了一个名为"one.py”的文件夹。而不是我把它粘贴到one.py中:
from datetime import datetime
import os
a=datetime.now()
file_to_open = os.path.join(os.getcwd(), "raw_data.txt")
with open(file_to_open, "a+") as file_object:
file_object.seek(0)
data = file_object.read(100)
if len(data)>0:
file_object.write("\n")
file_object.write(str(a))
file_object.close()到现在为止还好。日期将保存到文件中。
而不是我把这个加到克罗内塔:
crontab -e
...
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
* * * * * python3 ~python/one.pycron作业正在工作,我在运行后得到这个输出
grep CRON /var/log/syslog
Mar 21 11:33:01 instance-2 CRON[605]: (myname) CMD (python3 ~/home/python/one.py)
Mar 21 11:33:01 instance-2 CRON[604]: (CRON) info (No MTA installed, discarding output)
Mar 21 11:34:01 instance-2 CRON[647]: (myname) CMD (python3 ~/home/python/one.py)
Mar 21 11:34:01 instance-2 CRON[646]: (CRON) info (No MTA installed, discarding output)我想可能是因为根目录在一个不同的地方,所以我找到了。raw_data.txt
只有一个,在~python/下面
有人能帮我解决这个问题吗?为什么cron作业不将日期保存到文件中?
发布于 2021-03-21 12:56:59
我的假设是,它在错误的文件夹中查找raw_data.txt,但失败了,因为它找不到文件。要查看脚本的完整内容,请为cron作业添加一个日志文件,以便将输出转储到。你可以这样说:* * * * * /use/bin/python3 /home/m/one.py >> /home/m/out.log。这将使执行的全部输出哑到out.log,并向您提供解决问题所需的所有信息。
在不了解更多信息的情况下,我的假设是这个问题是由os.getcwd()引起的。这不会得到one.py的当前工作目录,而是从其中执行cron的当前工作目录。因为您是以a+的形式打开的,所以文件必须先存在才能附加到文件中。相反,您需要的是os.path.dirname(os.path.realpath(__file__)),它将为您提供one.py的完整目录路径,而不管脚本从何处调用。将这一行改为:
file_to_open = os.path.join(os.path.dirname(os.path.realpath(__file__)), "raw_data.txt")https://stackoverflow.com/questions/66732412
复制相似问题