我正在尝试从python 3.6创建(不进行修改,该文件尚不存在)一个json文件,并给一个特定的名称,我已经读过使用open(file,“ a”),如果该文件不存在,该方法将创建它。下面的方法可以正常运行,但是不会创建文件,有关如何解决此问题的任何想法。
我尝试了以下方法:
def create_file(self):
import os
monthly_name = datetime.now().strftime('%m/%Y')
file=monthly_name + ".json"
file_path = os.path.join(os.getcwd(), file)
if not os.path.exists(file_path) or new_file:
print("Creating file...")
try:
open(file, "a")
except Exception as e:
print (e)
else:
pass
答案 0 :(得分:1)
您在这里不需要a
(附加)模式。
此外,由于不好的做法是仅捕获异常并打印并继续,所以我也略去了这一点。
相反,如果函数 要覆盖现有文件,则会引发异常。
由于日期格式%Y/%m
创建了一个子目录,例如路径最终将成为
something / 2019 / 04.json
您需要确保它们之间的目录存在。 os.makedirs
做到了。
import os
import json
# ...
def create_file(self):
monthly_name = datetime.now().strftime("%Y/%m")
file_path = monthly_name + ".json"
file_dir = os.path.dirname(file_path) # Get the directory name from the full filepath
os.makedirs(file_dir, exist_ok=True)
if os.path.exists(file_path):
raise RuntimeError("file exists, not overwriting")
with open(file_path, "w") as fp:
json.dump({"my": "data"}, fp)