如何从python执行os / shell命令

时间:2016-03-08 05:48:04

标签: python

对于在终端中我说cd Desktop你应该知道它会将你带到那个目录,但我如何在python中这样做但是使用带有raw_input("")的桌面来选择我的命令?

3 个答案:

答案 0 :(得分:1)

以下代码使用raw_input读取您的命令,并使用os.system()

执行它
import os

if __name__ == '__main__':
    while True:
        exec_cmd = raw_input("enter your command:")
        os.system(exec_cmd)

最诚挚的问候, 亚龙

答案 1 :(得分:1)

也许你可以这样做:

>>> import subprocess
>>> input = raw_input("") 
>>> suprocess.call(input.split()) # for detail usage, search subprocess

有关详细信息,您可以搜索subprocess模块

答案 2 :(得分:1)

要使用您的具体示例,您需要执行以下操作:

import os
if __name__ == "__main__":
    directory = raw_input("Please enter absolute path: ")
    old_dir = os.getcwd() #in case you need your old directory
    os.chdir(directory)

我之前在我编写的一些目录维护函数中使用过这种技术并且它有效。如果你想更普遍地运行shell命令,你可以这样:

import subprocess
if __name__ == "__main__":
    command_list = raw_input("").split(" ")
    ret = subprocess(command_list)
    #from here you can check ret if you need to

但请注意这种方法。这里的系统不知道它是否传递了有效命令,因此可能会失败并错过异常。更好的版本可能如下:

import subprocess
if __name__ == "__main__":
    command_kb = {
        "cd": True,
        "ls": True
        #etc etc
    }
    command_list = raw_input("").split(" ")
    command = command_list[0]
    if command in command_kb:
        #do some stuff here to the input depending on the
        #function being called
        pass
    else:
        print "Command not supported"
        return -1
    ret = subprocess(command_list)
    #from here you can check ret if you need to

此方法表示支持的命令列表。然后,您可以根据需要操作args列表以验证它是否是有效命令。例如,您可以检查您要使用的目录cd是否存在,如果不存在则向用户返回错误。或者,您可以检查路径名是否有效,但仅在通过绝对路径连接时才能检查。