【问题标题】:FileNotFoundError: [Errno 2] No such file or directory: 'path_to_dir.json'FileNotFoundError:[Errno 2] 没有这样的文件或目录:'path_to_dir.json'
【发布时间】:2021-03-07 18:44:47
【问题描述】:

我正在尝试为特定游戏编写保存和加载功能,但是,我不断收到FileNotFoundError 消息。

def save_file():
    save_progress = input("Would you like to save you current progress? (Y/N):")
    if save_progress == 'Y':
        save_name = input("savename:")
        path = 'path_to_dir.json'.format(save_name)
        data = {
        'name': save_name
        }
        with open(path, 'w+') as f:
            json.dump(data,f)
        if save_progress == 'N':
            print("That fine maybe next time!")

def load_file():
    load_name = save_name
    path_two = 'path_to_dir.json'.format(load_name)
    with open(path_two, 'r') as f:
        j = json.load(f)
        name = str(j['name'])

有什么想法吗?

【问题讨论】:

  • 请举例运行和输出。
  • 你在这里做什么:path = 'path_to_dir.json'.format(save_name)。字符串中没有占位符,所以format 什么都不做。

标签: python file-not-found


【解决方案1】:

你的这部分代码有问题:

if save_progress == 'Y':
    save_name = input("savename:")
    path = 'path_to_dir.json'.format(save_name)

你只创建了path_to_dir如果用户输入Y

如果用户没有输入Y,你没有做任何事情来阻止这部分代码运行:

path_two = 'path_to_dir.json'.format(load_name)

导致FileNotFoundError

使用if 语句来确定程序是否应该运行load_file 函数,具体取决于是否已创建文件:

import json

def save_file():
    save_progress = input("Would you like to save you current progress? (Y/N): ")
    if save_progress == 'Y':
        save_name = input("savename: ")
        path = f'{save_name}.json'
        data = {'name': save_name}
        with open(path, 'w+') as f:
            json.dump(data,f)
        return save_name
    if save_progress == 'N':
        print("That fine maybe next time!")

def load_file(save_name):
    load_name = save_name
    path_two = f'{save_name}.json'
    with open(path_two, 'r') as f:
        j = json.load(f)
        name = j['name']

save_name = save_file()
if save_name:
    load_file()

【讨论】:

  • 那么我该如何改写函数呢?
  • 代码不断返回错误提示 TypeError: save_file() missing 1 required positional argument: 'save_name'
  • @Soulstealer123 哦,非常抱歉!原来def save_file(save_name): 应该只是def save_file():
【解决方案2】:

我假设您想使用以下行:

path = 'path_to_dir.json'.format(save_name)

以这样的方式

path = 'path_to_dir/{}.json'.format(save_name)

也许path_to_dir 应该是文件名。

您可能想研究以下使用字符串的方法,因为它可能感觉更自然。

path = f'path_to_dir/{save_name}.json'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2021-08-24
    • 2015-06-09
    • 2021-04-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多