Shell脚本:从shell脚本中执行python程序

时间:2010-12-07 13:30:53

标签: python shell

我试过谷歌搜索答案,但没有运气。

我需要使用我的工作超级计算机服务器,但是要运行我的python脚本,它必须通过shell脚本执行。

例如,我希望job.sh执行python_script.py

如何实现这一目标?

9 个答案:

答案 0 :(得分:139)

确保python可执行文件位于PATH环境变量中,然后在脚本中添加

python path/to/the/python_script.py

详细说明:

  • 在文件job.sh中,放置此
#!/bin/sh
python python_script.py
  • 执行此命令以使脚本可以为您运行:chmod u+x job.sh
  • 运行它:./job.sh

答案 1 :(得分:89)

方法1 - 创建shell脚本:

假设您有一个python文件hello.py 创建一个名为job.sh的文件,其中包含

#!/bin/bash
python hello.py

使用

标记可执行文件
$ chmod +x job.sh

然后运行它

$ ./job.sh

方法2(更好) - 让python本身从shell运行:

修改您的脚本hello.py并将其添加为第一行

#!/usr/bin/env python

使用

标记可执行文件
$ chmod +x hello.py

然后运行它

$ ./hello.py

答案 2 :(得分:8)

Imho,写作

python /path/to/script.py

非常错误,特别是在这些日子里。哪个蟒蛇? python2.6的? 2.7? 3.0? 3.1?大多数时候你需要在python文件的shebang标签中指定python版本。我鼓励使用

#!/usr/bin/env python2 #or python2.6 or python3 or even python3.1
来兼容。

在这种情况下,让脚本可执行并直接调用它会好得多:

#!/bin/bash

/path/to/script.py

这样你需要的python版本只能写在一个文件中。现在大多数系统都在使用python2和python3,而且符号链接 python 指向 python3 ,而大多数人都希望它指向 python2

答案 3 :(得分:3)

你应该能够以python scriptname.py

的形式调用它

例如

# !/bin/bash

python /home/user/scriptname.py 

还要确保脚本具有运行

的权限

您可以使用chmod u + x scriptname.py

使其可执行

编辑:殴打它:-p

答案 4 :(得分:3)

这对我最有用: 在脚本顶部添加:

#!c:/Python27/python.exe

(C:\ Python27 \ python.exe是我机器上python.exe的路径) 然后通过以下方式运行脚本:

chmod +x script-name.py && script-name.py

答案 5 :(得分:2)

这对我有用:

  1. 创建新的shell文件作业。所以,让我们说: touch job.sh并添加命令来运行python脚本(你甚至可以向该python添加命令行参数,我通常会预定义我的命令行参数)。

    chmod +x job.sh

  2. job.sh内添加以下py文件,让我们说:

    python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file.py"

    python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo "Done with python_file1.py"

  3. job.sh的输出应如下所示:

    Done with python_file.py

    Done with python_file1.py

    我通常在使用预定义的不同参数运行多个python文件时使用它。

    注意:快速了解此处发生的事情:

    python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo "completed with python_file.py" . 
    
    • 这里的shell脚本将运行文件 python_file.py ,并在运行时将多个命令行参数添加到python文件中。
    • 这并不一定意味着,您还必须传递命令行参数。
    • 您可以像python python_file.py一样使用它,简单明了。 接下来,>> 将打印并将此.py文件的输出存储在testpy-output.txt文件中。
    • && 是一个逻辑运算符,仅在成功执行上述操作后运行,并且作为可选的 echo "在python_file.py&#下完成34;将在运行时回显您的cli /终端。

答案 6 :(得分:2)

将以下程序保存为print.py

#!/usr/bin/python3
print('Hello World')

然后在终端类型:

chmod +x print.py
./print.py

答案 7 :(得分:1)

我使用它并且工作正常

Node [Node [Leaf 4, Leaf 2], Leaf 6, Leaf 9, Leaf 1]

答案 8 :(得分:0)

由于其他帖子都说了所有(我在寻找以下内容时偶然发现了该帖子)。
这是一种从另一个python脚本执行python脚本的方法:

Python 2:

execfile("somefile.py", global_vars, local_vars)

Python 3:

with open("somefile.py") as f:
    code = compile(f.read(), "somefile.py", 'exec')
    exec(code, global_vars, local_vars)

并且您可以通过提供其他一些sys.argv

来提供args