python - 在 PythonAnywhere 中作为计划任务运行时 request.urlretrieve 失败
问题描述
我有一个 .py 脚本,当我在控制台中运行它时它可以工作,但当我将它安排为自动任务时似乎失败了。该脚本使用 urllib.request(我确保将 Hashbang 设置为运行支持该软件包的 Python 3.6)从特定 URL 中点击并下载文件。当我手动运行它时再次没有问题,但是当它运行为计划任务我收到此错误:
Traceback (most recent call last): File
"/home/laiAdmin/Scripts/FullAutoSubStats.py", line 32, in <module>
urllib.request.urlretrieve(URL, dlFileName) File "/usr/lib/python3.6/urllib/request.py", line 258, in urlretrieve
tfp = open(filename, 'wb') FileNotFoundError: [Errno 2] No such file or directory:
'/home/laiAdmin/Data_Files/Downloads/FWdirect-Daily-Stats-Parser-autoDl-2018-05-08.json'
2018-05-08 16:48:11 -- Completed task, took 6.00 seconds, return code
was 1.
它指向的代码片段如下(出于安全目的隐藏了完整的 URL):
#Get timestamp and PWD
cwd = os.getcwd()
now = DT.datetime.utcnow()-DT.timedelta(hours=6)
todayStr = DT.datetime.strftime(now,"%Y-%m-%d")
nowStr = DT.datetime.strftime(now,"%m/%d/%Y %H:%M:%S")
#Request to download a new json file:
rootdir = cwd+'/Data_Files/Downloads/'
URL = "https://files.mailparser.io/d/*****"
#(hiding the full URL here for security purposes)
fn = "FWdirect-Daily-Stats-Parser-autoDl-"+todayStr+".json"
dlFileName = rootdir+fn
urllib.request.urlretrieve(URL, dlFileName)
最后一行是进行回溯的地方。请帮助我理解为什么当我在控制台中点击运行时它会运行,但当我将它安排为任务时会失败。
解决方案
非常愚蠢,但我只是想通了。结果是,当计划任务运行时,它从导致问题的不同目录运行。
感谢 pythonanywhere 上的 giles 提示我:https ://www.pythonanywhere.com/forums/topic/12790/#id_post_49647
需要 cd 到任务调度程序中的正确目录:
cd /home/laiAdmin/something/something; python3.6 /home/laiAdmin/myscript.py
推荐阅读
- java - 在 Scala 注释中使用 Java 枚举的“简单表达式的非法开始”
- python - asyncio.start_unix_server 和 redis 的套接字错误
- javascript - 我如何让 JavaScript 在没有扩展的情况下在 chrome 上运行
- nginx - 具有多个域的 Nginx 负载均衡器
- vapor - Vapor 4 叶 - 无法解决依赖关系
- android - FragmentStatePagerAdapter 正在泄漏,我不知道为什么在使用 LeakCanary 时
- javascript - 如何使用 JSX 将 JavaScript 变量传入 CSS?
- php - 为什么我不想信任文件的原始上传文件扩展名?
- swagger - IBM Cloud Speech to Text 是否具有 Swagger (Open API) 2.0 模式?
- c - softirq——它在网络堆栈中能持续多久?