【问题标题】:Change current directory and view available directories [duplicate]更改当前目录并查看可用目录[重复]
【发布时间】:2019-06-17 14:36:40
【问题描述】:

这不是重复的,因为原始答案无助于将其实施到我的原始输入命令解释器中。归功于原始问题/答案。

所以我正在使用 python 开发 DOS 风格的操作系统,我想知道如何甚至是否可以执行一个命令,让我在目录之间切换,就像常规命令提示符让你做的那样。

我不确定我对自己的解释有多好,但基本上我会在终端中使用与 cd 相同的命令,这样我就可以读取文件夹中嵌入的文件、在文件夹之间进行更改等。我不需要任何限制关于它有多复杂,但我希望它不是太长。

我还没有找到一个明确的解决方案。在最好的情况下,这就是您需要输入的全部内容

cd folder1
cd folderinfolder1

这将被输入到 raw inputinput 然后执行所以我假设它需要拆分所以它知道在空间之前有 cd 并且在空间之后有文件名,例如folder 我也有使用os.listdir 只显示文件而不显示任何文件夹的问题。

会这样使用

directory=raw_input("enter cd followed with a directory")


这个问题可能有点多,甚至不确定是否可能

【问题讨论】:

标签: python directory python-2.x cd


【解决方案1】:

import os

os.chdir('folder1')

os.chdir('folderinfolder1')

【讨论】:

  • 这将改变整个目录。我正在寻找的是您将使用原始输入来确定您想要运行此命令,同时知道要引用哪个目录
  • if 'cd' in directory: desired_directory = directory.split(' ')[1] os.chdir('desired_directory')
  • 最后一个问题,有没有简单的方法可以打印当前目录
  • os.getcwd()...还有很多其他你可能感兴趣的函数:docs.python.org/3/library/os.html
  • 非常感谢!
【解决方案2】:

除了在创建 shell 时使用 C 之外,我已经这样做了,在我的例子中,我使用了一个带有 chdir 函数,它看起来像这样:

static void min_cmd_cd_av(char *av, char ***env)
{
    char    *tmp;

    if (av && 0 == chdir(av))
    {
        tmp = min_env_get_val(env, "PWD=");
        min_env_set_path(env, "OLDPWD=", tmp);
        free(tmp);
        tmp = (char *)ft_memalloc(4098 * sizeof(char *));
        getcwd(tmp, 4098);
        min_env_set_path(env, "PWD=", tmp);
        ft_strdel(&tmp);
    }
    else
        ft_printf("\e[91mERROR: Invalid Path/Permissions\e[96m\n");
}

int         min_cmd_cd(int ac, char **av, char ***env)
{
    char    *tmp;

    if (ac <= 1)
    {
        tmp = min_env_get_val(env, "HOME=");
        if (tmp)
        {
            min_cmd_cd_av(tmp, env);
            ft_strdel(&tmp);
        }
        else
            ft_printf("\e[91mERROR: Home variable not found!\e[96m\n");
    }
    else if (ac > 1)
    {
        min_shell_path(&av, env);
        min_cmd_cd_av(av[1], env);
    }
    return (0);
}

我使用 shell 环境更新了 PWD 和 OLDPWD,这也允许您将其实现到您的 shell 中。

【讨论】:

  • 使用 python 2.7 IDLE 进行编程,而不是 C
猜你喜欢
  • 2014-07-26
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
相关资源
最近更新 更多