当我通过命令行运行python脚本时,一切工作都很完美,但是我们正在从cron运行脚本ConfigParser会创建一个空的列表列表
me = singleton.SingleInstance()
######### Accessing the configuration file #######################################
config = ConfigParser.RawConfigParser()
config.read('./matrix.cfg')
sections = config.sections()
######### Build the current map ##################################################
print sections
这是cron工作
* * * * * /usr/bin/python /etc/portmatrix/matrix.py | logger
这是输出
Feb 12 12:59:01 dns01 CRON[30879]: (root) CMD (/usr/bin/python /etc/portmatrix/matrix.py | logger) Feb 12 12:59:01 dns01 logger: []
答案 0 :(得分:2)
ConfigParser尝试读取文件./matrix.cfg
。
此文件的路径为./
,表示当前目录中的 。
那么从cron
运行时,您对当前目录有什么假设? (我猜你有一个文件/etc/portmatrix/matrix.cfg
,你认为./
实际上意味着“与正在运行的脚本在同一目录中” - 但这不是真的)
简单的解决方法是提供配置文件的完整路径。 E.g:
config = ConfigParser.RawConfigParser()
config.read('/etc/portmatrix/matrix.cfg')
答案 1 :(得分:1)
我遇到了类似的情况,由于umläute的回答,我能够解决它。
我正在使用操作系统,所以在你的情况下,这将是:
import os
...
base_path = os.path.dirname(os.path.realpath(__file__))
config = ConfigParser.RawConfigParser()
config.read(os.path.join(base_path, 'matrix.cfg')