2

Python新手在这里。

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

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

在脚本的每个步骤中,我使用以下语句添加到文本文件中:

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

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

我以前使用任务计划程序遇到过这样的事情,但过去从未解决过这个问题。

有任何想法吗?

4

1 回答 1

1

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

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

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

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

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

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

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

于 2015-12-30T15:59:58.877 回答