这个脚本应该是一个快速的 Clearcase 支持脚本,这是我第一次使用 Python,因为我决定转储 Perl。
调用 subprocess.Popen/communicate 以运行返回空字符串的 Clearcase 命令,但是我完全无法准确测试此返回值:
import subprocess
import sys
# cleartool descr -fmt "%Sn" foo.c
# returns the version number of the file if it's under CC control:
# b'"\\main\\hb_clearcase\\oint_uas_umac_03\\25"'
# or nothing if it's hijacked.
std_out = subprocess.Popen(['c:/rational/clearcase/bin/cleartool', 'desc',
'-fmt', '"%Sn"', 'foo.c'], stdout=subprocess.PIPE).communicate()
std_out = std_out.decode("utf-8")
print(std_out)
# prints: ""
# Here it goes wrong, I have tried many options in the if...
# The file IS hijacked, the std_out string IS empty.
if std_out == "":
print('File is hijacked')
else
print('File is not hijacked')
奇怪的是if std_dev == ""
直接在 DOS 框中运行脚本或在 Eclipse 中的 PyDev 中运行脚本之间的比较行为的差异。他们似乎总是返回相反的结果。如上所述,这在 PyDev 上按预期工作(即被劫持),在命令提示符下失败。进行比较if std_dev == '""'
,PyDev 提供预期的结果,但不是命令提示符。
这是 Win7 上最新的 Python 3.3,我预计几小时前就已经确定了这个脚本。
我到底做错了什么?