我有一个简单的JSON文件,我应该将它用作配置文件,它包含了使用MacBooks运行脚本的默认目录:
{
"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中搜索看似相关的问题,但没有找到答案。蒂娅!
发布于 2020-02-18 14:04:35
我认为这段代码中只有一个拼写错误:source_file = 'source.xlsx' source_file = main_sheet_path + filename
也许filename被设置为某个不存在的其他文件,因此它会给您错误。尝试设置filename='source.xlsx'
也许这会有帮助
https://stackoverflow.com/questions/60274580
复制相似问题