Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 通过CRON作业运行时Python脚本不工作_Python 3.x_Linux_Unix_Cron_Raspberry Pi - Fatal编程技术网

Python 3.x 通过CRON作业运行时Python脚本不工作

Python 3.x 通过CRON作业运行时Python脚本不工作,python-3.x,linux,unix,cron,raspberry-pi,Python 3.x,Linux,Unix,Cron,Raspberry Pi,我是python的新手,所以请容忍我 我有一个python脚本,它执行以下步骤: 调用另一个python脚本生成一个文件(名为logfile.txt,其中包含大量25kb左右的文本,可能需要几分钟) 文件生成完成后,它将解析文件并查找特定文本(假设“power=XXX”),并将XXX保存在变量中 执行db调用并将该值xxx保存在mysql表中 当脚本像这样独立执行时,所有这些都可以正常工作: sudo python3 Parser.py 现在我必须每15分钟做一次同样的事情。 所以我在cron

我是python的新手,所以请容忍我

我有一个python脚本,它执行以下步骤:

  • 调用另一个python脚本生成一个文件(名为logfile.txt,其中包含大量25kb左右的文本,可能需要几分钟)
  • 文件生成完成后,它将解析文件并查找特定文本(假设“power=XXX”),并将XXX保存在变量中
  • 执行db调用并将该值xxx保存在mysql表中
  • 当脚本像这样独立执行时,所有这些都可以正常工作:

    sudo python3 Parser.py
    
    现在我必须每15分钟做一次同样的事情。 所以我在crontab
    sudo crontab-e

    */2 * * * * sudo python3 /home/pi/Parser.py >> /home/pi/cronlogs.txt
    
    现在,这个cron作业运行良好,并生成cronlogs,我可以从python脚本中看到日志,但是没有生成日志文件,因此解析失败(当找不到文件时,按预期给出0)

    我尝试过的事情:

  • 我认为这可能是用户的问题,所以我在脚本开头的日志中打印了用户,这两种情况下,用户都是root用户(如预期的那样)

  • 在调用解析代码之前添加了文件可用性检查:

    打印(“找到的文件:”,os.path.isfile(文件名))

  • 这导致了一场真正的战争!!(即使我可以看到该位置中没有文件) 当我打印文件的第一行时,它是空的

    请帮忙

    OS:Rasbian(Rapberry pi)

    更新[添加了创建文件的代码段]:

    libDir="/home/pi/SIDLMSIntegration/Gurux.DLMS.Library.python/"
        dlmsCmd = " sudo python3 " + libDir + "main.py "
        dlmsCmd += " -S /dev/ttyUSB0:9600:8None1 -c 32 -s 3 -a Low -P ABCD0001 -sn 1 -v 0.0.40.0.0.255 -t Verbose > /home/pi/SIDLMSIntegration/logFile.txt "
        print("dlmsCommand is:",dlmsCmd)
        try:
            os.system(dlmsCmd)
            signedPow=0.0
            activeEnergy=0
            print("Exception did not occur")
        except Exception as err:
            print("Exception Occured:",err)
            pass
        parseFile("Unit.ACTIVE_POWER")
    

    为什么要在root的crontab中使用sudo?我尝试了不使用它,但结果是一样的。其实这并不重要。