- 帖子
- 59
- 精华
- 0
- 积分
- 244
- 阅读权限
- 30
- 注册时间
- 2015-10-25
- 最后登录
- 2023-10-29
|
本帖最后由 anyone 于 2016-1-6 04:03 编辑
我想使用subprogress调用cmd执行另外一个py, 如: b.py
如果在windows的cmd中, 可以直接这样使用b.py- b.py "d:\input folder/input-file.txt" "e:\output folder/output-file.txt"
复制代码 请留意上面的目录名称中有空格, 所以我需要使用双引号. 如果在另外一个py中(如: a.py), 使用subprogress调用b.py, 这时就出现了问题.
失败的方案1:- cmd = 'cmd'
- c = '/c'
- py = 'c:\py folder/b.py'
- input = 'd:\input folder/input-file.txt'
- output = 'e:\output folder/output-file.txt'
- command = [cmd, c, py, input, output]
- subprocess.call(command)
复制代码 这时会提示c:\py是未知程序, 说明这里没有很好的识别c:\py folder/b.py中的空格.
失败的方案2:
如果使用嵌套引号, 我以为是否就可以将带有引号的参数传递进去了,
- cmd = 'cmd'
- c = '/c'
- py = '"c:\py folder/b.py"'
- input = '"d:\input folder/input-file.txt"'
- output = '"e:\output folder/output-file.txt"'
- command = [cmd, c, py, input, output]
- subprocess.call(command)
复制代码 可是却告诉我\"c:\py folder/b.py\" 是不是系统命令, 这时内层的双引号变成了\"
我又尝试使用r来定义raw格式
- cmd = 'cmd'
- c = '/c'
- py = r'c:\py folder/b.py'
- input = r'd:\input folder/input-file.txt'
- output = r'e:\output folder/output-file.txt'
- command = [cmd, c, py, input, output]
- subprocess.call(command)
复制代码 仍然会提示c:\py是未知程序,
@crossin先生 请问我该如何处理这个参数问题呢?
|
|