Python os chdir错误,文件夹以数字Windows文件夹开头

问题描述 投票:1回答:1

花了3个小时看看如何使用os.chdir,运行此代码时我得到了OSError

dir1= "D:\_devs\Python01\project\03-Connect_\PyBind"

os.chdir(dir1)

OSError:[WinError 123]文件名,目录名或卷标语法不正确:'D:\\_devs\\Python01\\project\x03-Connect_\\PyBind\\examples'

dir1的定义无法修改(因为我想保留从windows文件夹中复制/粘贴(例如使用r'<string>或斜杠)

但是dir1变量可以通过字符串操作进行修改。

为什么生成\x

EDIT2(租赁空间删除):

    dir1 = r"D:\_devs\Python01\project\03-Connect_Java_CPP_Excel\PyBindGen\examples"

     dir2= os.path.abspath(dir1)

    os.chdir(dir1)

仍然有错误...

python windows path backslash
1个回答
0
投票

您可以尝试字符串转义和替换:

def norm(pth):
    pth = pth.encode("string-escape").replace("\\x", "/")
    return pth.replace("\\\\", "/")

您可能需要一个正则表达式来获得更强大的方法,但它应该适用于您的示例字符串:

In [77]: dir1 = "D:\_devs\Python01\project\03-Connect_\PyBind"

In [78]: norm(dir1)
Out[78]: 'D:/_devs/Python01/project/03-Connect_/PyBind'

对于python3尝试:

def norm(pth):
    pth = pth.encode("unicode-escape").replace(b"\\x", b"/")
    return pth.replace(b"\\\\", b"/").decode("utf-8")

对于没有十六进制的路径,只需返回字符串,只需将任何反斜杠更改为/

In [30]: dir1 = "D:\_devs\Python01\project\Connect_\PyBind"

In [31]: norm(dir1)
Out[31]: 'D:/_devs/Python01/project/Connect_/PyBind'
© www.soinside.com 2019 - 2024. All rights reserved.