Python Popen 将当前目录添加到参数?
Python Popen adding current directory to arguments?
尝试使用 subprocess.Popen() 到 运行 以文件路径作为参数的命令。这失败了,似乎 Popen() 正在将当前目录添加到传递给命令的参数列表中。
phil@mas-xubuntu:~/Downloads/pycharm-community-2016.3.2/bin$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> vm_root = "/mas_data/vms/"
>>> vm_path = "\"" + vm_root + "XP VM 1/XP VM 1.vmx\""
>>> vm_path
'"/mas_data/vms/XP VM 1/XP VM 1.vmx"'
>>> subprocess.Popen(["vmrun", "start", vm_path])
<subprocess.Popen object at 0x7f6b9225c898>
>>> Error: Cannot open VM: /home/phil/Downloads/pycharm-community-2016.3.2/bin/"/mas_data/vms/XP VM 1/XP VM 1.vmx", unknown file suffix
exit()
phil@mas-xubuntu:~/Downloads/pycharm-community-2016.3.2/bin$ vmrun start "/mas_data/vms/XP VM 1/XP VM 1.vmx"
<VM launches>
不确定我缺少什么让 Popen 工作并执行命令 vmrun start "/mas_data/vms/XP VM 1/XP VM 1.vmx"
提前致谢!
你太辛苦了。此 Popen
语法:
subprocess.Popen(["vmrun", "start", vm_path])
已经引用了针对空白的参数(与您煞费苦心地将自己的命令行编写为单个字符串的情况相反,我不建议这样做)
由于您还添加了引号,它会乱七八糟地传递引号,但失败了。只要做:
vm_path = vm_root + "XP VM 1/XP VM 1.vmx"
或者更好:
vm_path = os.path.join(vm_root,"XP VM 1/XP VM 1.vmx")
你会没事的。
具有 space 的路径需要处理。
该程序因 space:
而失败
"/mas_data/vms/XP 虚拟机 1/XP 虚拟机 1.vmx"
请修改目录名和文件名去掉space并检查
"/mas_data/vms/XP_VM_1/XP_VM_1.vmx"
尝试使用 subprocess.Popen() 到 运行 以文件路径作为参数的命令。这失败了,似乎 Popen() 正在将当前目录添加到传递给命令的参数列表中。
phil@mas-xubuntu:~/Downloads/pycharm-community-2016.3.2/bin$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> vm_root = "/mas_data/vms/"
>>> vm_path = "\"" + vm_root + "XP VM 1/XP VM 1.vmx\""
>>> vm_path
'"/mas_data/vms/XP VM 1/XP VM 1.vmx"'
>>> subprocess.Popen(["vmrun", "start", vm_path])
<subprocess.Popen object at 0x7f6b9225c898>
>>> Error: Cannot open VM: /home/phil/Downloads/pycharm-community-2016.3.2/bin/"/mas_data/vms/XP VM 1/XP VM 1.vmx", unknown file suffix
exit()
phil@mas-xubuntu:~/Downloads/pycharm-community-2016.3.2/bin$ vmrun start "/mas_data/vms/XP VM 1/XP VM 1.vmx"
<VM launches>
不确定我缺少什么让 Popen 工作并执行命令 vmrun start "/mas_data/vms/XP VM 1/XP VM 1.vmx"
提前致谢!
你太辛苦了。此 Popen
语法:
subprocess.Popen(["vmrun", "start", vm_path])
已经引用了针对空白的参数(与您煞费苦心地将自己的命令行编写为单个字符串的情况相反,我不建议这样做)
由于您还添加了引号,它会乱七八糟地传递引号,但失败了。只要做:
vm_path = vm_root + "XP VM 1/XP VM 1.vmx"
或者更好:
vm_path = os.path.join(vm_root,"XP VM 1/XP VM 1.vmx")
你会没事的。
具有 space 的路径需要处理。 该程序因 space:
而失败"/mas_data/vms/XP 虚拟机 1/XP 虚拟机 1.vmx"
请修改目录名和文件名去掉space并检查 "/mas_data/vms/XP_VM_1/XP_VM_1.vmx"