我已经创建了一个可以从命令行运行良好的Python脚本,我使用print语句显示一些状态消息。当我尝试使用launchd运行脚本时,所有打印输出都没有出现,但脚本工作正常,因为例如它更新sqlite数据库没有问题。
我正在使用以下plist文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.joanba.maslestorres.cat</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>/maslestorres.cat/jardiNet_datalogger.py</string>
</array>
<key>WorkingDirectory</key>
<string>/maslestorres.cat/</string>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/maslestorres.cat/log/out.txt</string>
<key>StandardErrorPath</key>
<string>/maslestorres.cat/log/err.txt</string>
</dict>
</plist>
假设print使用stdout,所以我希望正常输出转到文件/maslestorres.cat/log/out.txt
。
我做错了什么?
答案 0 :(得分:0)
我已经能够看到log.txt文件中的输出只是从python脚本刷新缓冲区。我一直在添加sys.stdout.flush(),我需要立即查看输出。我不清楚的是,为什么在启动卸载时,缓冲区丢失而不写入日志文件。