![Ubuntu 16.04 当程序从另一个文件夹运行时出现 FileNotFoundError](https://linux22.com/image/997938/Ubuntu%2016.04%20%E5%BD%93%E7%A8%8B%E5%BA%8F%E4%BB%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E8%BF%90%E8%A1%8C%E6%97%B6%E5%87%BA%E7%8E%B0%20FileNotFoundError.png)
我创建了一个使用附加文件(例如 form.ui)的程序,当我从程序目录运行该程序时,一切正常,但当我从另一个文件夹运行时,我得到了一个FileNotFoundError
,我该如何修复它?我将不胜感激任何建议。
v@v-System-Product-Name:/path/AppName$ ./app
作品。
v@v-System-Product-Name:~$ /path/AppName/app
FileNotFoundError: [Errno 2] No such file or catalog: 'form.ui'
答案1
您需要在脚本中将文件路径添加到文件名称之前。看起来您的文件 - form.ui
- 与脚本位于同一目录中。因此,您需要获取脚本的当前位置并将此路径放在文件名之前。
例如,假设您只想(在屏幕上)打印文件的内容form.ui
,并且:
你使用狂欢. 脚本必须如下所示:
#!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cat "$DIR/form.ui"
你使用php. 脚本必须如下所示:
<?php $DIR = realpath(dirname(__FILE__)); echo file_get_contents("$DIR/".'form.ui'); ?>
其中变量$DIR
包含脚本的路径。