格式化文件路径

rho*_*lke 6 python file-io

我是Python的新手,所以我可能会完全错误,但是我在获取和更改文件目录时遇到了问题.我的脚本包含多个文件名,可以在任何目录中.在我的脚本中,我需要python更改到文件的目录,然后执行一些操作.但是,我在更改目录时遇到问题.

这是我到目前为止所尝试的:

path=os.path.split(<file path>)
os.chdir(path[0])
<Do things to file specified by path[1]>
Run Code Online (Sandbox Code Playgroud)

我获取文件路径的方法是从资源管理器拖动到命令行.这会输入路径名称"C:\foo\bar\file_name.txt".当我在翻译中运行第一行时,我就出去了('C:\\foo\bar','file_name.txt').问题是由于某种原因,最后的反斜杠不会自动转义,因此当我运行该os.chdir(path[0])行时会出现错误.

我的问题是为什么最后一个反斜杠不像其他反斜杠一样自动转义?如何手动逃避最后一个反斜杠?有没有更好的方法来获取文件的目录并更改它?

JAB*_*JAB 6

最后一个反斜杠不会自动转义,因为当以下字符不形成带反斜杠的转义序列时,Python只会转义常规字符串中的反斜杠.事实上,在你的榜样,你就不会'C:\\foo\bar''C:\foo\bar',你会得到'C:\x0coo\x08ar'.

你想要做的是用反斜杠替换反斜杠,或者使拖放操作更简单,只需在路径前加上r它就是原始字符串而不识别转义序列.

>>> os.path.split(r"C:\foo\bar\file_name.txt")
('C:\\foo\\bar','file_name.txt')
Run Code Online (Sandbox Code Playgroud)