【发布时间】:2015-05-05 22:53:34
【问题描述】:
我有一个 Python 程序,当我从 LXTerminal 正常运行它时,它可以正常工作:
$ sudo python testcon.py
但是当我使用cron 运行它以在重启后启动时:
@reboot python /home/pi/testcon.py &
它停在该行:
f = open('info.txt')
并且不再做任何事情。它应该打开文件/home/pi/info.txt。
为什么会这样?我该如何解决这个问题?
这是我的程序的一个更简单的版本,它显示了问题:
import smbus
import time
bus = smbus.SMBus(1) # Rev 2 Pi uses 1
DEVICE = 0x23 # Device address (A0-A2)
IODIRA = 0x00 # Pin direction register
OLATA = 0x14 # Register for outputs
GPIOA = 0x12 # Register for inputs
bus.write_byte_data(DEVICE,IODIRA,0x00)
bus.write_byte_data(DEVICE,OLATA,0xFF) #set all of the outputs
time.sleep(3) #wait for 3 sec
f = open('info.txt') #should open the txt file
bus.write_byte_data(DEVICE,OLATA,0) #clear all of the outputs
f.close()
【问题讨论】:
-
我的猜测是python不在cron进程的路径中。你能追踪到日志中的错误信息吗?
-
不完全理解你的意思,但是当重新启动树莓时我可以启动程序(使用按钮),但是当程序到达这部分 f=open('info.txt') 程序停止.如果我从 sudo python 开始......没有问题。我应该以某种方式在 cron 中写入以使其能够打开 txt 文件吗?
-
(a) 覆盆子,你说? (b) 如果添加 sudo 修复它,这显然是一个权限问题。如果您的常规帐户可以访问该文件,则似乎 cron 以自己的用户身份运行,是这样吗?
-
对不起,我的意思是“sudo added”当我在LX终端启动程序时,只有这种情况下python程序才能正常运行并打开txt文件。如果我在重启后设置为由 cron 启动,则 python 程序会在应该打开 txt 文件的那一行停止。那我该怎么办,也许允许 cron 打开文本文件,或者我不知道?
-
我认为你需要做一些工作来清楚地解释你的情况。我仍然没有信心我理解你所描述的。任何人都无法重现您的问题,即使他们拥有您的计算机和操作系统。专注于此,我相信你会得到解决。
标签: python cron raspberry-pi