从python文件运行sh,语法错误

从python文件运行sh,语法错误,python,linux,sh,Python,Linux,Sh,我正在尝试从python文件运行sh脚本 import subprocess subprocess.call(["../my_script.sh"]) my_script.sh #!/usr/bin/python rm category.xml #!/usr/bin/sh rm category.xml python文件 import subprocess subprocess.call(["../my_script.sh"]) 我得到 File "../my_scrypt

我正在尝试从python文件运行sh脚本

import subprocess
subprocess.call(["../my_script.sh"])
my_script.sh

#!/usr/bin/python

rm category.xml 
#!/usr/bin/sh

rm category.xml
python文件

import subprocess
subprocess.call(["../my_script.sh"])
我得到

    File "../my_scrypt.sh", line 3
    rm category.xml
              ^
SyntaxError: invalid syntax

如何修复此问题?

您使用了一行
#/usr/bin/python
在一个非python的文件上。换一条蛇帮线

更好的是,当您可以调用Python函数执行相同的操作时,不要调用shell脚本:

import os
os.remove("category.xml")

你用了一行shebang的
#/usr/bin/python
在一个非python的文件上。换一条蛇帮线

更好的是,当您可以调用Python函数执行相同的操作时,不要调用shell脚本:

import os
os.remove("category.xml")

如果您使用的是python2x

使用命令模块:

import commands
print commands.getoutput('sh my_script.sh')
如果使用python3x

使用子流程模块:

import subprocess
print(subprocess.getoutput('sh my_script.sh'))

如果您使用的是python2x

使用命令模块:

import commands
print commands.getoutput('sh my_script.sh')
如果使用python3x

使用子流程模块:

import subprocess
print(subprocess.getoutput('sh my_script.sh'))

看看你的shell代码。您正在使用python解释器
#/usr/bin/python
并向其提供bash命令
rm category.xml

固定shell脚本:

#!/bin/bash

rm category.xml 

看看你的shell代码。您正在使用python解释器
#/usr/bin/python
并向其提供bash命令
rm category.xml

固定shell脚本:

#!/bin/bash

rm category.xml 
试试这个

my_script.sh

#!/usr/bin/python

rm category.xml 
#!/usr/bin/sh

rm category.xml
琐碎的方法:

>>> import subprocess
>>> subprocess.call(['./my_script.sh']) 
>>> 
试试这个

my_script.sh

#!/usr/bin/python

rm category.xml 
#!/usr/bin/sh

rm category.xml
琐碎的方法:

>>> import subprocess
>>> subprocess.call(['./my_script.sh']) 
>>> 

我有一个shebang行,我的_script.sh
#/usr/bin/python rm category.xml
Yes:这是错误的:您说的是用python运行该文件。这不是Python。我有一行shebang代码,我的_script.sh
#/usr/bin/python rm category.xml
Yes:这是错误的:您说的是用python运行该文件。这不是Python.bash和sh的区别。但是,它必须是
#/bin/sh
这取决于代码,我认为
rm
只是用于测试。sh不支持bash的许多有用特性,但它是可移植的。就我而言,在现代linux系统上,我从来没有遇到过bash的任何问题,只从高级语法中受益。bash和sh有不同之处。但是,它必须是
#/bin/sh
这取决于代码,我认为
rm
只是用于测试。sh不支持bash的许多有用特性,但它是可移植的。就我而言,在现代linux系统上,bash从来没有遇到过任何问题,我只从高级语法中受益。
子进程
从Python 2.4开始就可用,而
命令
在Python 2.6中被弃用(老实说,我到现在为止从未听说过)。
子进程
从Python 2.4开始就可用,在Python2.6中,
commands
被弃用(老实说,直到现在我才听说过它)。