我将字符串作为参数传递;到Python3函数。
此字符串由不同的变量组成;在少数情况下,我需要在字符串中加上引号,因此我将各种字符串连接起来以使其正常工作。
这是我在代码中使用的字符串,用于调用名为conn.app
的应用程序,该应用程序使用名为lac.tsd
的文件来执行各种操作。整个代码逻辑与该问题无关。因为错误的根本原因是操作系统之间的路径字符串和带引号的字符串行为不同(例如Windows和Unix之类的系统),所以事实
execute_string = '-b -m path="/Users/user/lac.tsd" -a app="/build/deploy/conn.app" -o output=/Users/user/out/'
这在OSX和Linux上没有问题;但是当我在Windows机器上运行它时,出现错误
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '"'
在深入研究了操作系统之间的差异之后,可以清楚地看到我的tsd
文件路径指向/Users/..
,这是文件系统的纯unix构造;因此,当我在Windows上运行代码时,它已被替换。
虽然,conn.app
仍然存在问题,在Windows上是conn.exe
;位置是相同的,所以我也做了修复。
最后但并非最不重要的一点是,与操作系统本身相关的2个问题:/
在Windows中是\
,因此必须进行更改;引号和双引号也是如此。
Python是否有任何结构可以帮助程序员处理像我这样的情况,您可以在其中构建要传递给函数的参数字符串,并在其中包含单引号和双引号,路径等?
在原始点上进行扩展:如何在OS之间进行处理?在一个简单的RE旁边用一个字符替换另一个字符;在处理路径,带引号的字符串和多个嵌套的带引号的字符串时,Python中是否使用任何允许代码独立于所使用的OS进行操作的结构?