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

Python os chdir错误,文件夹以数字Windows文件夹开头,python,windows,path,backslash,Python,Windows,Path,Backslash,花了3个小时研究如何使用os.chdir,运行此代码时,我得到了一个OSError: dir1= "D:\_devs\Python01\project\03-Connect_\PyBind" os.chdir(dir1) OSError:[WinError 123]文件名、目录名或卷标语法不正确:'D:\\\\\\u devs\\Python01\\project\x03-Connect\\\PyBind\\examples' 无法修改dir1的定义(因为我想保持从windows文件夹复制/

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

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

os.chdir(dir1)
OSError:[WinError 123]文件名、目录名或卷标语法不正确:
'D:\\\\\\u devs\\Python01\\project\x03-Connect\\\PyBind\\examples'

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

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

为什么生成
\x

EDIT2(删除租赁空间):


仍然存在错误…

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

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'

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

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'


dir1
似乎没有首字母“`
\0
正在转换为
\x0
。您需要“D:etc或
\\03
如果您的意思是希望将Windows路径作为文本字符串粘贴到Python脚本中,则需要将其设置为原始字符串,或对路径中的反斜杠进行反斜杠转义。顺便问一下,“反斜杠”是什么意思?我仍然有错误:dir1=r。”“D:_devs\Python01\project\03-Connect\u Java\u CPP\u Excel\PyBindGen\examples”dir2=os.path.abspath(dir1)os.chdir(dir1)我认为你的第二次尝试应该已经成功了。我知道这不是你想要的,但它可能会暴露出路径中的一个打字错误。我认为并非所有情况下你都能够恢复原始路径(例如“c:\x41\x42“==”c:AB“)。再加上“r”或者将反斜杠加倍/用前斜杠替换它们,您的常规选项包括将此设置移动到环境变量或单独的配置文件,然后可以按您喜欢的方式进行编辑。我建议您也考虑这些,如果这是您计划创建的更大的内容的一部分。<代码> DRI1似乎没有。要使开头的“`
\0
转换为
\x0
。您需要
r“D:
etc或
\\03
如果您的意思是希望将Windows路径作为文本字符串粘贴到Python脚本中,则需要将其设置为原始字符串,或对路径中的反斜杠进行反斜杠转义。顺便问一下,“反斜杠”是什么意思?我仍然有错误:dir1=r。”“D:_devs\Python01\project\03-Connect\u Java\u CPP\u Excel\PyBindGen\examples”dir2=os.path.abspath(dir1)os.chdir(dir1)我认为你的第二次尝试应该已经成功了。我知道这不是你想要的,但它可能会暴露出路径中的一个打字错误。我认为并非所有情况下你都能够恢复原始路径(例如“c:\x41\x42“==”c:AB“)。再加上“r”或者将反斜杠加倍/用前斜杠替换它们,您的常规选项包括将此设置移动到环境变量或单独的配置文件,然后可以按您喜欢的方式编辑它们。我建议您也考虑这些,如果这是您计划创建的更大的一部分。谢谢,但是我已经看到了:未知编码:字符串转义您正在使用python3吗?是的,…3.4,这是2.7解决方案?想知道2.7是否会永远留在Python中…@quantCode,2.7支持到2020年,并将持续很长时间,请尝试编辑python3@brezniczky,如果你想发表评论,请在问题下发表评论。谢谢,但我有Lookuperor:未知编码:字符串转义您正在使用python3吗?是的,…3.4,这是2.7解决方案?想知道2.7是否将永远留在Python中…@quantCode,2.7支持到2020年,并将持续很长时间,请尝试编辑python3@brezniczky,如果您想发表评论,请在问题下方发表评论。