我正在尝试对subprocess.check_output()
调用的命令的输出进行比较。由于我在Windows上运行它,我在输出中也得到\r\n
(这是一件好事)。
现在我想将该命令的输出与文本文件进行比较。这会失败,因为open()
不会保留\r
。这是我到目前为止所得到的:
try:
output = subprocess.check_output(paramList, universal_newlines=False,
stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as err:
output = err.output
errorCode = err.returncode
with open(EMCMD_INCORRECT_PARAMS, 'r') as fd_usage:
usageLines = fd_usage.read()
usage = True if usageLines == output else False
保留\r
的任何建议?谢谢!
答案 0 :(得分:0)
在python 3中,open使用newlines
参数来控制换行符翻译器的行为(see the docs)。此参数的值''
将禁用换行符。
如果您不能使用python 3,open
打开的文件对象的newline
属性包含原始类型的换行符,因此您可以使用它来获取原始内容:
with open(EMCMD_INCORRECT_PARAMS, 'r') as fd_usage:
usageLines = fd_usage.read().replace('\n', fd_usage.newline)
二进制模式也可能是一种解决方案,如果您不喜欢后处理read
返回以获取文件原始内容的想法。