python windows路径原始字符串

Posted

技术标签:

【中文标题】python windows路径原始字符串【英文标题】:python windows path raw string 【发布时间】:2021-01-06 07:51:47 【问题描述】:

当我跑步时

path = "C:\windows\System32\wininit.exe"
sub = (subprocess.run(["powershell.exe", "Get-Filehash", path, "-Algorithm", "md5"], capture_output=True))

我收到此错误:

所以我尝试了:

path = r"C:\windows\System32\wininit.exe"
path = "C:/windows/System32/wininit.exe"
path = r"C:/windows/System32/wininit.exe"

仍然出现同样的错误,而且我已经用完了选项。 请帮我解决这个问题,当我运行它时,它总是显示它正在尝试运行 'c:\\windows\\system32\\winit.exe',即使它应该只有 1 个反斜杠。

Update:我应该提一下:该代码适用于其他路径,但并非适用于所有路径。对于那些不起作用的,我尝试在powershell中单独运行它 Get-Filehash path -Algorithm md5 它可以工作,但是当我用 Python 运行它时就不行了。因为就是这种情况,我认为代码可以工作,但对于某些文件却不能,尽管它应该。所以我认为我需要一个解决方案!

【问题讨论】:

对于输出,它不转义斜杠(转换为 2 个斜杠)。您可以看到它也未转义换行符 (\r\n)。 subprocess 在执行中使用了一个斜杠。要查看格式化的消息,请将字符串传递给 'print` 函数。 这能回答你的问题吗? Why do backslashes appear twice? 您似乎正在使用 PowerShell 运行 MD5 文件哈希。如果是这样,为什么不直接使用内置的hashlib 库? @Mike67 是的,我知道只有 1 个反斜杠,我遇到的问题是由未转义引起的,但我该如何解决它是问题所在。 wjandrea 是的,它解释了反斜杠如何在字符串中起作用,但我无法理解如何修复它。 S3DEV你是对的,我可以使用它,但是当我尝试它时,显然我必须对路径进行编码,这意味着文件的哈希将被更改,对我没有好处! 您的代码无需更改即可为我工作。您可以访问 wininit.exe 吗? 【参考方案1】:

也许尝试使用 2 个反斜杠,如下所示:

path = "C:\\windows\\System32\\wininit.exe"

【讨论】:

不,没有区别。在所有当前版本的 Python 中,"\w\S" == '\\w\\S',尽管这已被弃用。

以上是关于python windows路径原始字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何摆脱python windows文件路径字符串中的双反斜杠? [复制]

python 如何快速转义路径字符串中的斜杠

windows中Python路径问题

Python在windows系统中表示文件路径

python Windows下路径名用‘/‘还是‘‘(以及和Linux的区别)

python-os