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

时间:2015-07-07 13:42:57

标签: python json

写了要在我的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", 

一位同事建议我查看我的文件的十六进制并进行比较:

outcome:
0000040: 7265 7669 7369 6165 2e65 7464 222c 200a  Myfile1", .

expected outcome:
0000040: 7265 7669 7369 6165 2e65 7464 222c 0a20  Myfile1",.

=> So you can see the last byte is different between the 
two files, i.e. 200a is not same as 0a20.

这就是我目前将结果写入文件的方式:

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'

1 个答案:

答案 0 :(得分:0)

非常感谢您的评论,是的,我有两个拼写错误,下面是纠正后的代码:

<强>码

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=(', ', ': '))