我正在尝试学习如何从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
跑了。发现了这个问题。我只需要将我的脚本放到服务器上并从那里运行它们。谢谢大家
答案 0 :(得分:0)
我能够通过在Mobaxterm中打开SFTP Session,将python文件传输到服务器,然后直接在服务器上运行文件(python已安装在服务器上)来解决此问题。