添加到文件中的Python不需要的空白

添加到文件中的Python不需要的空白,python,json,Python,Json,编写了要在Python应用程序上执行的测试。测试比较两个文件,预期结果(静态保存的文件)和使用Python的filecmp生成的结果(测试生成的文件)。起初,这种方法非常有效。随着时间的推移,文件停止匹配,测试开始失败 如果我使用Unixdiff,文件确实不同,但行的内容相同。如果忽略空白,即使用diff-w选项,则文件匹配 bash-4.1$ diff -w myfile.out ../expected_outcome bash-4.1$ diff myfile.out ../expect

编写了要在Python应用程序上执行的测试。测试比较两个文件,预期结果(静态保存的文件)和使用Python的filecmp生成的结果(测试生成的文件)。起初,这种方法非常有效。随着时间的推移,文件停止匹配,测试开始失败

如果我使用Unix
diff
,文件确实不同,但行的内容相同。如果忽略空白,即使用
diff-w
选项,则文件匹配

bash-4.1$ diff -w myfile.out ../expected_outcome

bash-4.1$ diff  myfile.out ../expected_outcome | more
4,6c4,6
<       "file": "File1",
<       "name": "Myfile1",
<       "created": "07/06/2015",
---
>       "file": "File1", 
>       "name": "Myfile1", 
>       "created": "07/06/2015", 
这是我目前将结果写入文件的方式:

rv = self.app.get(url)

with open(output_path1, 'w') as fp:
     fp.write(rv.data.decode('utf-8'))
在Python文档中,不清楚请求是如何返回数据的。在与同事进行了一些头脑风暴后,我们认为解决这个问题的方法是使用json.dump编写指定分隔符的文件。不幸的是,我不断出现错误,如果有人能纠正我的语法,我将不胜感激:

rv = self.app.get(url)

with open(output_path1, 'w') as fp:
    data = json.load(rv.data.decode('utf-8'))
    json.dump(data, indent=4, separators=(',', ':'))
产生以下错误:

AttributeError: 'str' object has no attribute 'read'

非常感谢您的评论,是的,我有两个打字错误,下面是正确的代码:

代码

rv = self.app.get(url)
with open(output_path1, 'w') as fp:
    data = json.loads(rv.data.decode('utf-8'))
    json.dump(data, fp, indent=2, separators=(', ', ': '))

为什么要对字符串使用
json.load()
?在这种情况下,您应该使用
json.loads()
。此外,
json.dump()
获取要转储的文件对象和数据。您需要传入
fp
rv = self.app.get(url)
with open(output_path1, 'w') as fp:
    data = json.loads(rv.data.decode('utf-8'))
    json.dump(data, fp, indent=2, separators=(', ', ': '))