Robot Framework中带引号的参数问题
我正在尝试运行一个简单的Python脚本,这个脚本接受一个参数并打印出来。 我是通过Robot Framework中的Operating System库里的Run这个关键词来执行这个Python脚本的。
我尝试了以下两种方式来执行:
${rc} ${output}= Run And Return Rc And Output python "C:\\Users\\Administrator\\Desktop\\abc.py" "C:\Program Files (x86)\Common Files"
在这种情况下,输出是正常的:
Documentation:
Runs the given command in the system and returns the RC and output.
Start / End / Elapsed: 20151119 16:01:57.147 / 20151119 16:01:57.179 / 00:00:00.032
16:01:57.147 INFO Running command 'python "C:\Users\Administrator\Desktop\abc.py" "C:Program Files (x86)Common Files" 2>&1'.
16:01:57.179 INFO ${rc} = 0
16:01:57.179 INFO ${output} = C:Program Files (x86)Common Files
但是,当我尝试下面这种方式时,就出现了错误:
${rc} ${output}= Run And Return Rc And Output "C:\\Python27\\python.exe" "C:\\Users\\Administrator\\Desktop\\abc.py" "C:\Program Files (x86)\Common Files"
错误信息:
16:12:44.481 INFO Running command '"C:\Python27\python.exe" "C:\Users\Administrator\Desktop\abc.py" "C:Program Files (x86)Common Files" 2>&1'.
16:12:44.481 INFO ${rc} = 1
16:12:44.481 INFO ${output} = The filename, directory name, or volume label syntax is incorrect.
如果我在命令提示符下运行同样的东西,它是可以正常工作的。
C:\Windows>"C:\Python27\python.exe" "C:\Users\Administrator\Desktop\abc.py" "C:Program Files (x86)Common Files"
C:Program Files (x86)Common Files
我只是想知道在Robot Framework的第二种情况下,我哪里出错了?
相关文章:
- 暂无相关问题
1 个回答
2
RobotFramework 不是通过命令行来运行命令,而是直接把命令传给 Windows。所以它在找一个名为字面意思的 "C:\Python27\python.exe"
的文件,而不是 C:\Python27\python.exe
。注意那些包裹的引号,通常这些引号是在命令执行前由命令行处理的。因此,你应该把命令改成 C:\\Python27\\python.exe "C:\\Users\\Administrator\\Desktop\\abc.py" "C:\Program Files (x86)\Common Files"
为了更好地理解命令行参数的区别,你可以尝试比较一下下面的结果
subprocess.check_call('"C:\Python27\python.exe" "C:\Users\Administrator\Desktop\abc.py" "C:Program Files (x86)Common Files"')
和
subprocess.check_call('"C:\Python27\python.exe" "C:\Users\Administrator\Desktop\abc.py" "C:Program Files (x86)Common Files"', shell=True)