我有一个字符串如下
mystring1=xcopy /Q /Y d:\\Program Files\\TestData\\*.* c:\\Program Files\\TestData\\Company name\\
mystring2=xcopy '/Q' '/Y' 'd:\tj\tjData\\' "c:\Program Files\TestData\\Company name\\"
我使用shlex模块如下
mylist1=shlex.split(mystring1)
mylist2=shlex.split(mystring2)
但是我收到了一个错误:
ValueError: No escaped character
mylist1值应为 [xcopy,/ Q,/ Y,d:\ Program Files \ TestData \,c:\ Program Files \ TestData \ Company name \]
和
mylist2值应为 [xcopy,/ Q,/ Y,d:\ tj \ tjData \,c:\ Program Files \ TestData \ Company name \]
答案 0 :(得分:3)
嗯,我不确定你想要做什么,但是,第一方面,我看到一个Windows用户,另一方面,我在手册中播种Posix选项。 / p>
所以我想:“posix = False”适合他。
以下是它给出的内容:
>>> mystring1
'xcopy /Q /Y d:\\Program Files\\TestData\\*.* c:\\Program Files\\TestData\\Company name\\'
>>> split(mystring1, posix=False)
['xcopy', '/Q', '/Y', 'd:\\Program', 'Files\\TestData\\*.*', 'c:\\Program', 'Files\\TestData\\Company', 'name\\']
>>> mystring2
'xcopy \'/Q\' \'/Y\' \'d:\tj\tjData\\\' "c:\\Program Files\\TestData\\Company name"'
>>> split(mystring2, posix=False)
['xcopy', "'/Q'", "'/Y'", "'d:\tj\tjData\\'", '"c:\\Program Files\\TestData\\Company name"']
字符转义可能并不完全符合您的需求,但由于我不经常使用Windows,因此我不会再冒险了。
编辑:据我所知,当您开始讨论主题时,在文档中导航并不总是很容易,这里有一些链接:
shlex< =你总是RTFM。至少两次。
Python Lexcial Analysys< =可能不明显,但会改变主意。
答案 1 :(得分:0)
输入值的格式非常糟糕。 考虑阅读格式化帮助。
哪个字符串会导致错误? 首先看一下你的输入:反斜杠字符在Python字符串中有特殊含义。 所以当路径是:
s = 'C:\MSDOS'
你必须写:
s = 'C:\\MSDOS'
第一个反斜杠说:“注意!下一个字符并不意味着具有特殊功能”,第二个反斜杠就是字符本身。