我正在尝试使用 Python 创建一个安装脚本,以使用 systemd
创建一个守护进程。
安装脚本摘录:
....
# Copy ProcessManager directory into /usr/local/bin/
print('Copy sources into /usr/local/bin')
os.system('cp -r ' + processManagerPath + ' /usr/local/bin')
fileContent = '[Unit] \n' \
'Description=ProcessManager \n' \
'After=tlp-init.service \n\n' \
'[Service] \n' \
'Type=oneshot \n' \
'RemainAfterExit=no \n' \
'ExecStart=/usr/bin/python /usr/local/bin/ProcessManager/gobatch.py \n\n' \
'[Install] \n' \
'WantedBy=multi-user.target'
file = open('/etc/systemd/system/processManager.service', 'w')
file.write(fileContent)
file.close()
....
但是,当我启动我的守护进程时:sudo systemctl status processManager.service
我得到这个错误:
stringToSend = convertFileToString()
File "/usr/local/bin/ProcessManager/gobatch.py", line 23, in convertFileToString
fbatchContent = readFile()
File "/usr/local/bin/ProcessManager/gobatch.py", line 13, in readFile
with open("FBatch", "r") as f:
IOError: [Errno 2] No such file or directory: 'FBatch'
当我列出 /usr/local/bin/ProcessManager
时,内容是:
FBatch findCommand.py gobatch.py install.py Programs.md UpdateFBatchFile.py
关于 cp -r
是否存在我不知道的东西?还是特权?
谢谢你的帮助!
最佳答案
当您尝试 with open("FBatch", "r") as f:
, 它不会尝试打开 /usr/local/bin/ProcessManager
中的文件,因为它不是当前工作目录。相反,它会尝试在其他地方打开它。在这种情况下,它试图打开根目录中的文件 /
.
您要么必须为所有 open
提供完整路径电话,或使用 os.chdir(path)
一次更改当前工作目录。
关于python - 目录复制后找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48212964/