Shell脚本:从一个shell脚本中执行一个python程序
我试着用Googlesearch答案,但没有运气。
我需要使用我的超级计算机服务器,但是为了运行我的python脚本,它必须通过shell脚本来执行。
例如,我想job.sh
来执行python_script.py
这怎么能做到呢?
只要确保python可执行文件在您的PATH环境variables中,然后添加到脚本中即可
python path/to/the/python_script.py
细节:
- 在文件job.sh中,把这个
#!/bin/sh python python_script.py
- 执行这个命令使脚本可以运行:
chmod u+x job.sh
- 运行它:
./job.sh
方法1 – 创build一个shell脚本:
假设你有一个python文件hello.py
创build一个名为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
Imho,写作
python /path/to/script.py
是非常错误的,特别是在这些日子里。 哪个python? python2.6的? 2.7? 3.0? 3.1? 大多数时候你需要在python文件的shebang标签中指定python版本。 我鼓励使用
#!/ usr / bin / env python2#或python2.6或python3甚至python3.1
为了兼容。
在这种情况下,让脚本可执行并直接调用它会更好:
#!/斌/庆典 /path/to/script.py
这样,你需要的python版本只能写入一个文件。 现在大部分的系统都在同时使用python2和python3,并且恰巧symlink python指向了python3 ,而大多数人希望它指向python2 。
你应该可以将其作为python scriptname.py来调用
例如
# !/bin/bash python /home/user/scriptname.py
还要确保脚本有权限运行
你可以通过使用chmod u + x scriptname.py来使其可执行
编辑:殴打它:-p
这最适合我:在脚本的顶部添加这个:
#!c:/Python27/python.exe
(C:\ Python27 \ python.exe是我机器上python.exe的path)然后通过以下方式运行脚本:
chmod +x script-name.py && script-name.py
这适用于我:
-
创build一个job.sh并添加命令来运行python脚本(你甚至可以添加命令行参数到该python,我通常预先定义我的命令行参数)。
chmod + x job.sh
-
在job.sh里面添加下面的py文件,说:
python_file.py argument1 argument2 argument3 >> testpy-output.txt && echo“python_file.py”
python_file1.py argument1 argument2 argument3 >> testpy-output.txt && echo“用python_file1.py完成”
-
job.sh的输出应该如下所示:用python_file.py完成python_file.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文件中。
&&是一个逻辑运算符,只有在成功执行上述操作之后才能运行,并且在python_file.py中完成的可选回显将在运行时回显给您的cli /terminal。