首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取JSON文件并获得没有Python中不可见字符的值的最佳方法是什么?

读取JSON文件并获得没有Python中不可见字符的值的最佳方法是什么?
EN

Stack Overflow用户
提问于 2020-02-18 13:55:54
回答 1查看 68关注 0票数 1

我有一个简单的JSON文件,我应该将它用作配置文件,它包含了使用MacBooks运行脚本的默认目录:

代码语言:javascript
复制
{
  "main_sheet_path": "/Users/jammer/Documents/Studios⁩/⁨CAT/⁨000-WeeklyReports⁩/2020/",
  "reference_sheet_path": "/Users/jammer/Documents/DownloadedFiles/"
}

我读取JSON文件并使用以下代码获取值:

代码语言:javascript
复制
with open('reportconfig.json','r') as j:
    config_data = json.load(j)

main_sheet_path = str(config_data.get('main_sheet_path'))
reference_sheet_path = str(config_data.get('reference_sheet_path')) 

在对源文件执行任何操作之前,我使用该路径检查源文件是否存在:

代码语言:javascript
复制
source_file = 'source.xlsx'
source_file = main_sheet_path + filename
if not os.path.isfile(source_file) :
    print ('ERROR: Source file \'' + source_file + '\' NOT FOUND!')
    return

请注意,文件名是在脚本运行时作为参数输入的(有多个文件,脚本必须知道哪个文件是目标文件)。

文件肯定在那里,但脚本似乎从未“看到”它,所以我得到了我在上面的代码中打印的“错误”。为什么我认为有看不见的字符?因为当我从上面的“错误”通知中打印的内容复制并粘贴到终端时,文件名的最后几个字符总是被一些看不见的字符所取代,按退格键将擦除光标不应该在的位置的字符。

我如何确定文件在那里,以及我的问题是读取JSON文件,而不是在目录名称中或代码中的任何其他位置?因为我最终放弃了使用JSON配置文件,转而使用这样的配置文件:

代码语言:javascript
复制
#!/usr/local/bin/python3.7
# -*- coding: utf-8 -*- 
file_paths = { "main_sheet_path": "/Users/jammer/Documents/Studios⁩/⁨CAT/⁨000-WeeklyReports⁩/2020/",
               "reference_sheet_path": "/Users/jammer/Documents/DownloadedFiles/"
             }

然后,我只需导入该文件并获得如下值:

代码语言:javascript
复制
import reportconfig as cfg
main_sheet_path = cfg.file_paths['main_sheet_path']
reference_sheet_path = cfg.file_paths['reference_sheet_path']
...

这个变通方法工作得很好--我没有得到文件不存在的“错误”,脚本的其余部分也会按预期执行。当文件不在那里时,我得到我想要的正确的“错误”,从“错误消息”中复制并粘贴完整的路径和文件名给我完整的文件名,按退格键会删除正确的字符(没有有趣的行为,没有看不见的字符)。

但是谁能告诉我如何正确地读取JSON文件而不得到那些讨厌的不可见字符?我花了几个小时试图弄清楚,包括在stackoverflow中搜索看似相关的问题,但没有找到答案。蒂娅!

EN

回答 1

Stack Overflow用户

发布于 2020-02-18 14:04:35

我认为这段代码中只有一个拼写错误:source_file = 'source.xlsx' source_file = main_sheet_path + filename

也许filename被设置为某个不存在的其他文件,因此它会给您错误。尝试设置filename='source.xlsx'

也许这会有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60274580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档