我已经创建了Tensorflow图像分类器,应该使用另一个python脚本调用图像分类器。
我尝试了 os.system(),但是我不能只调用Tensorflow脚本,因为这取决于Tensorflow脚本位置中的多个文件。所以我必须在主脚本(第二个python脚本)中包含所有带有分类脚本的文件。
最好的方法是什么?
脚本运行时:
从另一个位置运行时脚本错误:
答案 0 :(得分:0)
您是否尝试过Python Subprocess而不是 os.system ?
在How do you use subprocess.check_output() in Python?中,您可以看到这个简单的演示:
py2.py:
import sys
print sys.argv
py3.py:
import subprocess
py2output = subprocess.check_output(['python', 'py2.py', '-i', 'test.txt'])
print('py2 said:', py2output)
运行它:
$ python3 py3.py
py2 said: b"['py2.py', '-i', 'test.txt']\n"
更新:
我认为您的问题是在运行python脚本之前需要指定/设置正确的文件夹路径。例如:
请考虑以下文件夹结构:
/root/project/script.py
/root/project/data/file.txt
如果在python脚本中使用相对路径(如 ./ data / file.txt )加载文件,则需要在 project 文件夹中运行脚本。 如果在 root 文件夹中运行它,如下所示:
/root$ python project/script.py
该脚本失败,因为它试图在 root 文件夹中找到 data / file.txt 。 您可以在运行python脚本之前使用 cd 命令更改当前目录。您可以在调用 os.system 时执行此操作,如下所示:
os.system("cd project && python script.py") # for my example case
答案 1 :(得分:0)
无论您从哪里调用python脚本,脚本中的所有相对路径都将基于该路径。也就是说,您从第一张图片中的项目文件夹中调用了脚本,因此指向project_folder/tf_files/...
的链接有效,而您后来又从其他位置调用了该脚本,因此符号链接被弄乱了。您的脚本试图找到elsewhere/tf_files/...
,但该子文件夹不存在。
您可以编辑脚本,以便始终取消所有路径(从/home/...
开始),然后就不会混淆