添加到文件中的Python不需要的空白
编写了要在Python应用程序上执行的测试。测试比较两个文件,预期结果(静态保存的文件)和使用Python的filecmp生成的结果(测试生成的文件)。起初,这种方法非常有效。随着时间的推移,文件停止匹配,测试开始失败 如果我使用Unix添加到文件中的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
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=(', ', ': '))