为什么Python会剪切’^’字符以及如何避免呢?
Python不会剪切
^字符。
Popen()照原样将字符串(
resize_command)传递给
CreateProcess()Windows
API调用。
很容易测试:
#!/usr/bin/env pythonimport sysimport subprocesssubprocess.check_call([sys.executable, '-c', 'import sys; print(sys.argv)'] +['^', '<-- see, it is still here'])
后一个命令使用
subprocess.list2cmdline()遵循“解析C命令行参数”规则将列表转换为命令字符串的方式-对无效
^。
^并不是特别的
CreateProcess()。
^如果使用
shell=True(
cmd.exe运行时)是特殊的。
当且仅当
产生的命令行将由cmd解释时,才在每个shell元字符(或每个字符)前加上一个
^字符。它包括
^自身。



