我正在尝试运行一个带有一个参数(CSV文件)的python文件。它在我在终端中运行脚本时有效,但是当我在cron中运行它时会出错。
这是我在终端中运行的行:
python nb2.py my_csv_file.csv
这是我的代码,我试图在cron中运行:
42 13 * * * /usr/local/bin/python2.7 ~/nb/Development/code/nb2.py ~/nb/Development/code/my_csv_file.csv &> /tmp/June_QB_cat.log
错误说它无法找到已存在于code
文件夹中的sqlite表文件。
答案 0 :(得分:2)
请注意,当您在终端中运行命令时,您已经在〜/ nb / Development / code目录中,因此您当前的工作目录就是那个;当你在它中运行cron时,它不是。我建议你做(在你的cron工作中)cd ~/nb/Development/code && python nb2.py my_csv_file.csv &> /tmp/logfile.tx
或做os.chdir("~/nb/Development/code")
作为代码的第一步。 (另外,我建议使用/ home / username代替〜以防万一你在某些时候没有将cronjob作为你的用户名运行,但鉴于你得到的错误,这听起来不是问题)
答案 1 :(得分:1)
您可以使用
获取相对于当前脚本的文件路径import os.path
relative_path = os.path.join( os.path.dirname(__file__), "sqlitetable" )