我写了一个程序,将一些文字写入" log.txt"用户登录时的文件(我将此程序作为任务添加到具有触发器的任务调度程序"登录时#34;)。为了检查程序是否会启动,我还添加了一些代码让它显示一个窗口。
from PySide.QtCore import *
from PySide.QtGui import *
import sys
import logging
# file writing test, failed
logging.basicConfig(filename='log.txt', level=logging.DEBUG)
logging.info('loaded logging module')
app = QApplication(sys.argv)
w = QWidget()
vbox = QVBoxLayout()
w.setLayout(vbox)
# file reading test
f = open('d:\write_file.py')
text = f.read()
f.close()
vbox.addWidget(QLabel(text))
w.show()
app.exec_()
然后重新启动系统后,我可以看到窗口显示,但是" log.txt"文件甚至不存在!为什么会这样?
PS。我已经使用PyInstaller将脚本冻结为exe,如果它有帮助
答案 0 :(得分:1)
任务计划程序作为特定系统用户运行,而不是刚刚登录的用户。这意味着您的代码无权更改用户的文件。
虽然您可以指定任务计划程序应使用的用户,但您不能说“当前用户”。
您有两种选择:
将文件放入Autostart文件夹中,登录代码将以用户身份执行。
更改您要写入的文件的权限,并为调度程序用户提供写入权限。