为什么任务管理器不在脚本中运行某些代码行?

时间:2015-12-30 15:56:23

标签: python scheduled-tasks taskscheduler

Python新手在这里。

我有一个Python脚本,可以执行一些地理数据库管理(协调/发布版本,压缩等)。我的脚本中有以下代码行:

createLog = open(str(datetime.date.today()) + ".txt", "w")

沿着脚本的每一步,我使用以下语句添加到文本文件中:

createLog.write("Database connections blocked.\n")

当我在IDE(PyCharm)中运行脚本时,我得到了所需的结果:一个文本文件,每一步写入.txt文件。当我在任务计划程序中运行它时,没有创建.txt文件,因此没有日志。据我所知,其他一切都在运行。我能够跟踪对数据所做的编辑。

我之前使用任务调度程序经历过类似的事情,但过去从未能解决问题。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为这是一个工作目录问题。 Python的open函数在当前工作目录中打开一个文件,而不是与脚本在同一文件夹中。这是一个普遍的误解! (在学习Python的时候,这让我很困惑......)

那么什么是工作目录?好吧引用我的好朋友维基百科:

  

在计算中,进程的工作目录是分层文件系统的目录,如果有的话,[1]与每个进程动态关联。当进程引用使用简单文件名或相对路径的文件(而不是从根目录的完整路径指定的文件)时,将相对于进程的当前工作目录解释引用。因此,例如一个带有工作目录/兔子鞋子的进程要求创建文件foo.txt将最终创建文件/rabbit-shoes/foo.txt。

(资料来源:https://en.wikipedia.org/wiki/Working_directory

那么如何选择这个工作目录?

它是由该进程的父进程选择的!当您从像bash这样的shell运行程序时,shell(父进程)有助于将您正在运行的程序(子进程)的工作目录设置为您当前所在的目录。(即,您{的目录{1}}' d。)

由于您的IDE很聪明且很有帮助,因此它正在启动您的Python脚本过程并将工作目录设置为脚本本身所在的位置。任务调度程序不太有用......我完全不知道它是什么设置工作目录。但是,如果您搜索系统,我相信您会发现某个位置的日志文件!

相关问题