我编写了一个程序,其主要目的是不断询问用户数据文件名,然后绘制这些文件的图形。但是,这些文件存在于各种目录中。我决定能够以标准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
部分。)
在宏伟的计划中,这不是什么大问题,因为它只是防止打字错误,但我只是想知道这里发生了什么。谢谢!
答案 0 :(得分:2)
Python没有做错任何事情,似乎windows只是weird about dots。
答案 1 :(得分:0)
您可以使用正则表达式将两个以上的点转换为../的集合。类似的东西:
userinput = re.sub('\.\.\.+', lambda x: os.path.join(*['..']*(len(x.group(0))-1)), userinput)