我有一个简单的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中搜索看似相关的问题,但找不到答案。蒂亚
我认为这段代码中有一个输入错误:
source_file = 'source.xlsx' source_file = main_sheet_path + filename
可能文件名被设置为某个不存在的其他文件,因此它会给您带来错误。 尝试设置
filename='source.xlsx'
也许会有帮助
相关问题 更多 >
编程相关推荐