Python:使用用户输入列出目录作为目录名不起作用

时间:2012-02-23 20:06:30

标签: python filesystems

我一直在努力解决这个问题。我只想列出用户将指定的目录中的文件。下面是我的代码和追溯:

>>> os.listdir(r'{}'.format(input('directory:')))

directory:C:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
WindowsError: [Error 123] The filename, directory name, or volume label syntax i
s incorrect: 'C:\r\\*.*'

非常感谢任何帮助,谢谢!

3 个答案:

答案 0 :(得分:3)

您需要以字符串格式提供C:

它对我来说很好

>>> os.listdir(r'{0}'.format(input('directory:')))
directory:"C:\Users"
['All Users', 'Default', 'Default User', 'desktop.ini', 'Public', 'RanRag']
>>>

或尝试使用raw_input

>>> os.listdir(r'{0}'.format(raw_input('directory:')))
directory:C:\Users
['All Users', 'Default', 'Default User', 'desktop.ini', 'Public', 'RanRag']
  

raw_input函数从输入中读取一行,将其转换为字符串   (剥离尾随换行符),然后返回

如果您使用python3raw_input替换为input

>>> os.listdir(r'{0}'.format(input('directory:')))
directory:C:\Users
['All Users', 'Default', 'Default User', 'desktop.ini', 'Public', 'RanRag']
>>>

答案 1 :(得分:2)

我猜错误在于使用input代替raw_input

如果使用input python尝试来解析用户输入的文本。在你的情况下你只想拥有用户输入的字符串,所以你要么必须在字符串中添加引号(就像RanRag在他的答案中所做的那样),或者你可以简单地使用raw_input,因为它返回用户的字符键入字符串。

答案 2 :(得分:0)

正如RanRag所说。但是既然你已经从raw_input获得了一个字符串,你就可以这样做:

os.listdir(raw_input('directory: '))