在Python中读取JSON文件并获取值而不使用不可见字符的最佳方法是什么?

2024-09-29 23:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

{
  "main_sheet_path": "/Users/jammer/Documents/Studios⁩/⁨CAT/⁨000-WeeklyReports⁩/2020/",
  "reference_sheet_path": "/Users/jammer/Documents/DownloadedFiles/"
}

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

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')) 

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

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配置文件,转而使用如下配置文件:

#!/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/"
             }

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

import reportconfig as cfg
main_sheet_path = cfg.file_paths['main_sheet_path']
reference_sheet_path = cfg.file_paths['reference_sheet_path']
...

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

但是谁能告诉我如何正确地读取JSON文件而不获取那些讨厌的不可见字符?我花了数小时试图找出答案,包括在stackoverflow中搜索看似相关的问题,但找不到答案。蒂亚


Tags: 文件path脚本jsonsourcemain文件名错误

热门问题