2013-02-28 1917 views
0

这是一个小型项目建议。
我想创建许多用户定义的unix命令,并使用Python编写的代码对文件执行各种操作。
例如extractinfo'文件名'这个命令将提取元数据或一些存储在一些文件中的一般信息]Python + Shell [创建用户定义的unix命令和安装]

这就是我要去的地方:
1.假设我有一个Python代码extract.py。
2.现在,以创建 '我自己的UNIX命令'(说 - 'extractinfo'),我编写了一个名为shell脚本 - extractinfo:

#/bin/bash 
python /home/extract.py 

3.现在,我希望把上述shell脚本放在/ usr/bin中。所以我创建另一个shell脚本 - install.sh:

#!/bin/bash 
chmod u+x extractinfo 
sudo cp extractinfo /usr/bin/ 

4.现在我可以只运行install.sh并且使用命令 'extractinfo'。

问题是,如果我使用另一个系统并运行install.sh,命令'extractinfo'变得可用,但随后在终端上执行命令时,出现错误(python:can not open file'extract.py' :[Errno 2]没有这样的文件或目录)被抛出。

如何在需要使用另一个系统时照顾原始python脚本的路径?

我知道试图链接shell和python是非常粗暴的做事方式。任何帮助/建议,关于这个问题,赞赏。

回答

0

有没有理由不直接使用shebang for python?如果你担心python的路径不一致,可能使用/ usr/bin/env间接寻址?如果您不熟悉,请参阅http://en.wikipedia.org/wiki/Shebang_%28Unix%29。我不清楚你需要一个bash脚本。只需将python脚本放在/ usr/bin中(或者更好,/ usr/local/bin)

换句话说,如果不是很清楚,请使脚本的第一行成为: #!/usr/bin/python 或 #!/ usr/bin/env python

+0

我尝试添加shebang行并将脚本放在/ usr/bin中,但该文件不能成为可执行文件(顺便说一句,我也改变了权限)。为了执行脚本,我仍然需要调用python解释器。我仍然必须写:'python extract'。我只是不能写一个简单的'提取'并运行脚本。有什么建议么? – Holmes 2013-03-01 08:30:48

+0

嘿,那工作。谢谢。 :D权限有问题。现在它可以工作。非常感谢您清理所有内容。 :) – Holmes 2013-03-01 09:13:03