目录路径python中的空格

时间:2016-04-11 18:02:25

标签: python macos spaces

我是编写Python的一个菜鸟,我遇到了一些谷歌搜索没有帮助我的东西。 我试图编写一个简单的目录列表工具,我似乎无法处理OSX中目录名中的Spaces。 我的代码如下:

def listdir_nohidden(path):
    import os
    for f in os.listdir(path):
        if not f.startswith('.'):
            yield f

def MACListDirNoExt():
import os
MACu = PCu = os.environ['USER']
MACDIR = '/Users/'+MACu+'/Desktop//'
while True:
    PATH = raw_input("What is the PATH you would like to list?")
    if os.path.exists(PATH):
        break
    else:
        print "That PATH cannot be found or does not exist."
NAME = raw_input ("What would you like to name your file?")
DIR = listdir_nohidden(PATH)
DIR = [os.path.splitext(x)[0] for x in DIR]
f = open(''+MACDIR+NAME+'.txt', "w")
for file in DIR:
    f.write(str(file) + "\n")
f.close()
print "The file %s.txt has been written to your Desktop" % (NAME)
raw_input ("Press Enter to exit")

为了便于解决问题,我认为这可以归结为:

import os
PATH = raw_input("What is the PATH you would like to list")
os.listdir(PATH)

当提供包含空格/卷/磁盘/的目录路径时,这是它返回的文件夹

"没有此类文件或目录:' / Volumes / Disk / this \\是\\ a \\ folder /'

看起来它逃脱逃跑......?

2 个答案:

答案 0 :(得分:0)

检查raw_input()返回的值是否出现'\\',并用''替换它们。

a = a.replace('\\', '')

答案 1 :(得分:0)

我刚刚碰到这个,我猜我匆匆做的事也是你的尝试。在某种程度上,@ zwol和@ trans1st0r都是正确的。

你的简化程序没有任何问题。我相信如果你输入输入/Volumes/Disk/this is a folder,一切都会正常工作。

但是,您可能正在做的事情(或者至少我正在做的事情)是将文件夹从Finder拖到终端。当您拖动到终端时,操作系统会自动为您转义空格,因此最终输入终端的内容为/Volumes/Disk/this\ is\ a\ folder

所以要么你可以确保你输入的内容&#34;没有这些反斜杠,或者您可以使用@ trans1st0r的建议作为支持拖动功能的方法,尽管后者会在边缘情况下导致问题,即您所需的路径实际上有反斜杠。< / p>