Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.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/4/json/14.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 无法从JSON文件打印数据_Python_Json_Git - Fatal编程技术网

Python 无法从JSON文件打印数据

Python 无法从JSON文件打印数据,python,json,git,Python,Json,Git,我有一个名为data.JSON的JSON文件,我正在尝试打印JSON文件中的数据。通过以下命令创建的JSON文件: git log --pretty="format:{"commit":"%h", "merge":"%p", "author":"%an", "title":"%s", "body":"

我有一个名为data.JSON的JSON文件,我正在尝试打印JSON文件中的数据。通过以下命令创建的JSON文件:

git log --pretty="format:{"commit":"%h", "merge":"%p", "author":"%an", "title":"%s", "body":"%b"}",>"C:\test_temp\data.json"
我试图用parse_json函数打印文件中的数据,但收到一个错误,上面写着IOError:[Errno 22]无效模式('r')或文件名“C:\test\u temp\data.json”

json文件已经存在,但我不确定为什么它无法读取该文件。 此外,从JSON文件生成的数据没有正确的格式,因为字典没有被“”包围,即使我在执行的git log命令中指出了它。如果我尝试解析json文件,会不会导致问题。

也许可以尝试:

json\u directory=“C:\\test\u temp\\data.json”

您的命令正在生成无效的json,因此您的
json.load
方法调用将永远不会成功

您需要转义引号——您提供的(从stack overflow的语法突出显示中可以看到)实际上是一系列字符串,shell将这些字符串连接在一起

在OSX上的BASH中,转义字符串如下所示:

 git log --pretty="format:{\"commit\":\"%h\", \"merge\":\"%p\", \"author\":\"%an\", \"title\":\"%s\", \"body\":\"%b\"}"
还可以用单引号将整个参数括起来,如下所示:

 git log --pretty='format:{"commit":"%h", "merge":"%p", "author":"%an", "title":"%s", "body":"%b"}',>"C:\test_temp\data.json"

一旦您的json生成命令被更正,我怀疑只要路径正确,您的脚本就会成功


如果您试图按照我的建议更正该命令,但该命令不起作用,请发布您正在生成的JSON文件以及您正在使用的shell。

这是否回答了您的问题?我正在使用windows cmd shell。我使用了这个escape\方法,以便打印引号,但我仍然得到了与以前相同的输出,即没有引号。如果没有引号,则引号不会被转义。这是你的问题。也许试试我推荐的另一种形式?
 git log --pretty='format:{"commit":"%h", "merge":"%p", "author":"%an", "title":"%s", "body":"%b"}',>"C:\test_temp\data.json"