python - 目录复制后找不到文件

标签 python linux systemd

我正在尝试使用 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/

相关文章:

python - 使用python循环在jira中创建票据

linux - 在 Linux 中替代 mail 或 mutt 发送邮件?

debian - 如何从命令行手动重新启动或停止 virtuoso

linux - 如何使用 systemd 播放 mp3 轨道的前 n 秒?

python celery 不工作

Python:使用 smtplib 获取 Gmail 服务器永无止境

Python 模块在 bash 中返回错误,但不在 IDLE 中返回错误

linux - 找不到 Linux 内核 v3.5 中的 trace_console 定义

c - 在没有互联网访问的情况下将头文件安装到 linux 机器上

mongodb - systemd 无法启动 MongoDB