【问题标题】:Python json.dump file contains %Python json.dump 文件包含 %
【发布时间】:2021-09-12 03:55:39
【问题描述】:

我有一个简单的 python 脚本,可以将字典写入文件:

from datetime import datetime, timedelta
import json
import time


token_file_name = "dict.json"

my_dict = {"access_token": "MbwrA4HY1rjUJLrho",
           "expires_in": 1800,
           "refresh_token_expires_in": 7776000
          }   

with open( token_file_name, 'w', encoding='utf-8') as f:
  json.dump(my_dict, f, ensure_ascii=False, indent=4)
f.close()

我在 JSON 对象的末尾看到一个奇怪的字符 (%):

╰─➤  cat dict.json 
{
    "access_token": "MbwrA4HY1rjUJLrho",
    "expires_in": 1800,
    "refresh_token_expires_in": 7776000
}%

两个问题:

  1. 如何消除这种情况?

  2. 在读取包含多个 JSON 对象的文件并且如果在两个 JSON 对象之间显示“%”时,这种情况是否会出现问题?

【问题讨论】:

  • 我已经测试了你的代码。并且在文件中看不到%
  • 会不会和cat dict.json前面显示的其他不寻常的字符有关?
  • 如果您在文本编辑器中打开文件,% 是否也存在?
  • 有没有可能只是您的 shell 提示符(以及您的文件 cat-ing 不以换行符结尾)?

标签: python json file dump


【解决方案1】:

百分号不在您的文件中。当输出末尾没有换行符时,Zsh 会这样做。

试试这个:

$ echo -n test
test%

-n 选项省略了echo 通常插入的换行符。

【讨论】:

  • 谢谢你——你说的完全正确。是 zsh 在显示文件内容时添加 % 结束。
猜你喜欢
  • 2013-02-24
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多