在Python中将带有空格的目录从raw_input传递到os.listdir(path)

时间:2016-09-06 23:11:13

标签: python python-2.7 escaping

我已经查看了一些有关此主题的帖子,但没有看到任何特别符合我用法的内容。 This one looks to be close同一问题。他们谈论逃避逃脱角色。

我的问题是我希望这个脚本在MAC和PC系统上运行 - 并且能够处理文件夹名称中包含空格的子文件夹中的文件。

现在我使用从几个不同的SO帖子中部分收集的代码:

directory = raw_input("Enter the location of the files: ")
path = r"%s" % directory

for file in os.listdir(path):

我不太清楚第二条线在做什么 - 所以也许这就是需要调整的明显线条。它适用于常规文件夹名称,但名称中没有空格。

我尝试过使用" \"而不只是" ", - 没有用 - 但无论如何我都在寻找代码解决方案。我不希望用户必须指定转义字符

在Windoze上使用子文件夹名称" LAS Data"为了响应raw_input提示(不带引号),我收到一条消息:

  

系统无法找到指定的路径" LAS Data \ *。*"

2 个答案:

答案 0 :(得分:2)

您的问题很可能不是您提供的代码,而是您提供的输入。消息

  

系统无法找到指定的路径" LAS Data \ *。*"

建议您(或用户)与文件的通配符一起输入目录。一个名为" LAS Data \ *。*"的目录。确实不存在(除非你对你的文件系统做了一些特别的事情: - )。

尝试输入" LAS数据"代替。

不应该需要原始字符串

> python
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec  5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> directory = raw_input("Enter the location of the files: ")
Enter the location of the files: Directory with Spaces
>>> for file in os.listdir(directory):
...     print(file)
...
hello-1.txt
hello-2.txt
>>>

答案 1 :(得分:1)

  

我不太明白[path = r"%s" % directory]行在做什么

它会创建path的副本directory

>>> directory = raw_input()
LAS Data
>>> path = r"%s" % directory

>>> path == directory
True

>>> type(path), type(directory)
(<type 'str'>, <type 'str'>)

真想知道你从哪里得到的。似乎没有意义。