如何在Windows中使用Python处理带有空格的长路径

时间:2019-06-07 21:56:10

标签: python whitespace filepath

在下面的代码中,我需要遍历目录中具有长名称和路径空格的文件。

def avg_dmg_acc(path):
    for d in os.listdir(path):
        sub_path = path + '/' + d
        if os.path.isdir(sub_path):
            if d.startswith('Front'):
                for f in os.listdir(sub_path):
                    fpath = r"%s" % sub_path + '/' + f
                    print(fpath)
                    print(os.path.exists(fpath))
                    df = pd.read_csv(fpath)

然后我运行提供参数path的函数:

path = r"./Mid-Con Master dd3d5c56-581c-42e0-acde-04e7feed3bb8/620138 91852327-e08d-4ed1-9774-383c888cb04e/Power End 2d41ba63-dfb9-4984-a5a5-153997fea43a"
avg_dmg_acc(path)

但是我得到的文件不存在错误:

File b'./Mid-Con Master dd3d5c56-581c-42e0-acde-04e7feed3bb8/620138 91852327-e08d-4ed1-9774-383c888cb04e/Power End 2d41ba63-dfb9-4984-a5a5-153997fea43a/Front c41f42ce-7158-4371-8cf6-82d1bcf04787/Damage Accumulation f907a97a-6d2d-40f6-ba02-0bc0599b773b.csv' does not exist

如您所见,我已经在使用r"path"了,因为我在可以处理路径中空格的地方读取了它。路径也是在此版本中手动构建的,例如sub_path = path + '/' + d,但我最初尝试使用os.path.join(path, d),但没有用。我还尝试了Path中的pathlib,因为它仍然是the recommended way in Python 3。在某一时刻,我尝试使用os.path.abspath代替我现在在./中使用的相对路径,但是它仍然说文件不存在。

为什么不起作用?是因为路径太长还是空格处理不正确?

1 个答案:

答案 0 :(得分:0)

原来是导致此问题的路径长度。我尝试一次减少最低一级字符的文件夹名称,直到os.path.exists(fpath)false变为true的地步。我想我需要在处理之前重命名所有文件夹名称