Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何告诉子流程停止转义引号?_Python_Vim_Subprocess - Fatal编程技术网

Python 如何告诉子流程停止转义引号?

Python 如何告诉子流程停止转义引号?,python,vim,subprocess,Python,Vim,Subprocess,我试图使用subprocess调用Vim,并向其传递一个参数。例如: subprocess.call(['gvim.exe', ''' "+map <F5> :echo 'Hello!'<cr>" ''']) subprocess.call(['gvim.exe',''''+-map:echo'Hello!''''] 此命令在命令行上工作: > gvim.exe "+map <F5> :echo 'Hello!'<cr>" >gvim.

我试图使用subprocess调用Vim,并向其传递一个参数。例如:

subprocess.call(['gvim.exe', ''' "+map <F5> :echo 'Hello!'<cr>" '''])
subprocess.call(['gvim.exe',''''+-map:echo'Hello!'''']
此命令在命令行上工作:

> gvim.exe "+map <F5> :echo 'Hello!'<cr>"
>gvim.exe“+map:echo'Hello!'”
然后我按F5,它告诉我你好

子进程调用不起作用。当我在task manager中查看流程时,我看到我的字符串现在是:

"\" +map <F5> :echo 'Hello!'<cr>\""
“\”+map:echo'Hello!'\""
完全不是我所期望的,我也不认为这是Vim所期望的。看起来子进程不知何故逃过了我的引用,但我不知道为什么


有什么方法可以让它像我期望的那样工作吗?

不需要引号,因为
子流程。call
不使用shell直接将参数传递给流程(除非您设置
shell=True


因此,
subprocess.call(['gvim.exe',“+map:echo'Hello!””])
就足够了。

是的,问题不在于转义(毕竟,转义只用于显示字符串),而在于引号。