1

我编写了一个程序,其主要目的是不断地向用户询问数据文件名,然后绘制这些文件的图形。但是,根据设计,这些文件存在于各种目录中。我认为能够以标准cd样式导航会很好,这样用户就可以轻松地进入所述目录并选择他/她想要的任何文件。

我对 python 很陌生(现在正在使用 2.7),所以也许我实现的很糟糕,但下面是我现在的代码:

import os

...

userinput = raw_input('What would you like to do: ').lower()
if userinput.startswith('cd '):
    try:
        newdir = userinput.split('cd ')[1]
        os.chdir(newdir)
        print(os.getcwd()+'\n')
    except:
        print('Not a valid directory.\n')

到目前为止,这实际上适用于我的测试用例(在 Windows 环境中运行,无论好坏),唯一的例外是用户输入类似于cd .... 只要有除两个以外的任何数量的句点,就不会引发错误(我在没有 try/except 的情况下完成了此操作),并且程序保留在当前目录中(它打印出它已经存在的位置,而不是继续声明的except部分)。

从总体上看,这没什么大不了的,因为它只是为了防止出现拼写错误,但我只是想知道这里发生了什么。谢谢!

4

2 回答 2

2

Python 没有做错任何事,似乎 windows对 dots 很奇怪

于 2014-05-05T20:19:00.623 回答
0

您可以使用正则表达式将两个以上的点转换为 ../ 的集合。就像是:

userinput = re.sub('\.\.\.+', lambda x: os.path.join(*['..']*(len(x.group(0))-1)), userinput)
于 2014-05-05T20:40:09.407 回答