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

时间:2016-02-20 14:49:05

标签: python windows path backslash

花了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)

仍有错误......

1 个答案:

答案 0 :(得分:0)

您可以尝试使用string-escape和替换:

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'