【发布时间】:2023-03-29 08:35:01
【问题描述】:
我有一个 Python 脚本,它从 SFTP 站点下载一个 txt 文件,更改标题,写入一个新的文本文件,然后将其转换为 CSV。该脚本在 IDLE 中完美运行。我正在尝试将其设置为 Windows 任务计划程序中的日常任务,但由于以下错误而失败:IOError: [Errno 17] No usable temporary file name found。
这是代码的相关部分。 headerChangeDict 在本节上方定义。错误来自这里的第一行:
with tempfile.NamedTemporaryFile(dir='.', delete=False) as tmp,\
open(spaces_txt_local_filepath, 'rb') as f:
r = csv.reader(f, delimiter = '\t')
w = csv.writer(tmp, delimiter = '\t', quoting=csv.QUOTE_NONNUMERIC)
header = next(r)
for h in header:
newHeader = re.sub("\s+", "_", h.strip())
for headerChangeStr in headerChangeDict.keys():
if newHeader == headerChangeStr:
newHeader = headerChangeStr.replace(headerChangeStr,headerChangeDict[headerChangeStr])
newHeaderList.append(newHeader)
w.writerow(newHeaderList)
for row in r:
w.writerow(row)
os.rename(tmp.name, new_text_filepath)
【问题讨论】:
-
它可能与用于运行计划任务的凭据有关。看到这个answer 到我很久以前写的关于这个主题的一个相关问题。
-
好的。 Python 没有安装在系统级别,只安装在我的用户帐户上。
-
您是在设置环境变量 TMP 还是 TEMP。我认为
tempfile使用它们。它们必须可由运行计划任务的有效用户写入 -
是的,它们都在 user\AppData\local\Temp 下
-
我尝试确保 Temp 目录不是只读的,并且我的用户配置文件具有完全权限,但没有帮助。我以前在使用任务调度程序时遇到过这种问题。有没有好的免费替代品?