Python:[Errno 2]没有这样的文件或目录 - 奇怪的问题

时间:2016-10-17 19:24:18

标签: python python-3.x

我正在学习Create your own shell in Python教程,我有一些奇怪的问题。我写了以下代码:

import sys
import shlex
import os

SHELL_STATUS_RUN = 1
SHELL_STATUS_STOP = 0

def shell_loop():
    status = SHELL_STATUS_RUN

    while status == SHELL_STATUS_RUN:
        sys.stdout.write('> ') #display a command prompt
        sys.stdout.flush()
        cmd = sys.stdin.readline()  #read command input
        cmd_tokens = tokenize(cmd) #tokenize the command input
        status = execute(cmd_tokens) #execute the command and retrieve new status

def main():
    shell_loop()

def tokenize(string):
    return shlex.split(string)

def execute(cmd_tokens): #execute command
    os.execvp(cmd_tokens[0], cmd_tokens) #return status indicating to wait for the next command in shell_loop
    return SHELL_STATUS_RUN


if __name__ == "__main__":
    main()

现在我正在输入一个" mkdir文件夹"命令它返回错误:[Errno 2] No such file or directory。但如果我以前写过" help"命令正常工作(显示所有可用的命令),命令mkdir正常工作,它创建一个文件夹。请指导我的代码有什么问题? 我在Windows 8.1 64x上使用Notepad ++编写

1 个答案:

答案 0 :(得分:0)

从我的链接中的评论中复制粘贴(感谢Ari Gold

嗨,好像你在Windows上试过了。 (我忘了注意它适用于Linux和Mac或类似Unix的仿真器,如Cygwin)

对于第一个问题,它似乎无法在您的系统环境中找到mkdir命令。您可能会找到mkdir二进制文件所在的目录并使用execvpe()来显式指定环境

对于第二个问题,Windows上的os模块没有fork()函数。 但是,我建议你在Windows上使用Cygwin模拟类似Unix的环境,上面的两个问题应该消失。

在Windows 10中,有Linux-Bash可能有用,但我从不尝试。