Using subprocess.call with an argument
本问题已经有最佳答案,请猛点这里访问。
与此问题相关
原则上的问题是相同的,我有一个subprocess.system调用
1 2 3 4 | ... EDITOR = os.environ.get('EDITOR', 'vim') subprocess.call([EDITOR, tf.name]) ... |
其中
然而,Sublime文本建议将
1 | subprocess.call(['subl -w',"somefilename"]) |
它的失败是这样的:
1 2 3 4 5 6 7 8 9 10 11 12 | raceback (most recent call last): File"/usr/bin/note", line 65, in <module> storage["notes"][args.name] = writeNote(args.name, storage) File"/usr/bin/note", line 54, in writeNote subprocess.call([EDITOR, tf.name]) File"/usr/lib/python3.5/subprocess.py", line 557, in call with Popen(*popenargs, **kwargs) as p: File"/usr/lib/python3.5/subprocess.py", line 947, in __init__ restore_signals, start_new_session) File"/usr/lib/python3.5/subprocess.py", line 1541, in _execute_child raise child_exception_type(errno_num, err_msg) FileNotFoundError: [Errno 2] No such file or directory: 'subl -w' |
当然,应该是这样的
1 | subprocess.call([subl","-w""somefilename"]) |
一个解决办法可能是
1 2 | args = EDITOR.split("") subprocess.call(args + ["somefilename"]) |
但我有点担心这样做,因为我不知道
处理这个案子的正确方法是什么?
你可以使用shlex。它处理类似于unix shell的命令。例如:
因此,您应该能够直接做到: