我在表达这个问题时遇到了麻烦,但是本质上我在使用Pyinstaller创建我的PyCharm项目的可分发.exe。在PyCharm中,我一直在运行代码时读写外部JSON文件。我从PyCharm内部手动创建这些JSON文件,然后告诉PyCharm它是什么类型的文件(JSON),而不是使用脚本本身的操作,例如:
with open('filename.json', 'w') as newfile:
json.dump(contents, newfile, indent=2)
因此,我不必在文件名中包含实际的'.json'文件扩展名,因为PyCharm已经知道它是哪种文件类型。但是,我将分发此项目,因此我编写了代码,如果尚不存在,它们将自动为用户创建这些外部JSON文件。使用此代码:
def check_files():
files_to_check = ['filename1', 'filename2', 'filename3', 'filename4', 'filename5']
for file in files_to_check:
try:
with open(file, 'r') as dummy_var:
pass
except FileNotFoundError:
with open(file, 'w') as create_new_file:
json.dump([], create_new_file, indent=2)
我想知道Pyinstaller是否会将PyCharm对我手动创建的JSON文件的了解带到导出的.exe,还是我每次程序使用以上功能创建新文件时都必须指定'.json'扩展名。
换句话说-.exe文件会在没有我指定的情况下将'filename1'识别为JSON类型的文件,因为它是PyCharm中的JSON类型文件,还是我需要将其明确命名为'filename1.json' ?
显而易见的答案是,在每个文件名中都简单包含'.json'是安全的,但是如果这些文件已被识别为JSON文件,则在名称中包含'.json'扩展名将导致文件名为' filename1.json.json”,这会导致我的程序出错。