Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将check_output()的输出与文件中的文本进行比较_Python_Windows - Fatal编程技术网

Python 将check_output()的输出与文件中的文本进行比较

Python 将check_output()的输出与文件中的文本进行比较,python,windows,Python,Windows,我正在尝试对子流程调用的命令的输出进行比较。请检查\u output()。由于我在Windows上运行此操作,因此在输出中也会得到\r\n(这是一件好事) 现在我想将该命令的输出与文本文件进行比较。此操作失败,因为open()没有保留\r。以下是我到目前为止得到的信息: try: output = subprocess.check_output(paramList, universal_newlines=False,

我正在尝试对
子流程调用的命令的输出进行比较。请检查\u 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
的建议?谢谢

在Python3中,open使用
换行符
参数来控制换行符转换器()的行为。如果此参数的值为
,则会禁用换行转换


如果不能使用python 3,则由
open
打开的文件对象具有
newline
属性,该属性包含原始类型的换行符,因此可以使用该属性获取原始内容:

with open(EMCMD_INCORRECT_PARAMS, 'r') as fd_usage:
    usageLines = fd_usage.read().replace('\n', fd_usage.newline)

如果您不喜欢对
read
返回的内容进行后处理以获取文件的原始内容,那么二进制模式也可能是一个解决方案。

请在将来只写:
usage=usageLines==output
二进制模式根据需要工作。还有,感谢@SilentGhost