在Windows计算机上从Python运行Linux命令

时间:2016-05-26 19:09:30

标签: python linux shell

我正在尝试学习如何从Python运行命令行命令。我可以用DOS做到这一点:

import subprocess
subprocess.call("dir",shell=True)

这很好,但我需要能够为linux命令执行此操作,因为我的公司使用Linux服务器。我正在使用Mobaxterm来运行本地linux会话。当我尝试这个时:

import subprocess
subprocess.call("ls",shell=True)

我从终端收到此错误:

'ls' is not recognized as an internal or external command, operable program or batch file.

这听起来很荒谬,因为ls显然是一个linux命令。

如果我不包含shell=True,我会收到此错误:

Traceback (most recent call last):
  File "ConsolePractice.py", line 4, in <module>
subprocess.call("ls")
File "C:\Users\my_username\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 560, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Users\my_username\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 950, in __init__
restore_signals, start_new_session)
File "C:\Users\my_username\AppData\Local\Programs\Python\Python35-32\lib\subprocess.py", line 1220, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] The system cannot find the file specified

那么我做错了什么?我怎样才能让它发挥作用?

编辑:感谢您的评论。 Python for Windows不适用于我正在尝试的内容。我连接到Linux服务器并做了:

cat > ConsoleCmd.py
import subprocess
subprocess.call("ls",shell=True)
^C
python ConsoleCmd.py

...和ls跑了。发现了这个问题。我只需要将我的脚本放到服务器上并从那里运行它们。谢谢大家

1 个答案:

答案 0 :(得分:0)

我能够通过在Mobaxterm中打开SFTP Session,将python文件传输到服务器,然后直接在服务器上运行文件(python已安装在服务器上)来解决此问题。