【问题标题】:python mathplotlib savefig FileNotFoundErrorpython matplotlib savefig FileNotFoundError
【发布时间】:2019-05-06 21:25:52
【问题描述】:

我已经使用 matplotlib 制作了一个图形,现在我正在尝试使用 matplotlib.pyplot.savefig 将其保存到文件中

import matplotlib.pyplot as plt

# . . .

plt.savefig("/home/username/PycharmProjects/sandbox/images/result.png")

目录“/home/username/PycharmProjects/sandbox/images/”存在,可惜在plt.savefig调用时出现FileNotFoundError。

有谁知道,这个问题怎么解决?

【问题讨论】:

  • 该目录很可能存在。三重检查任何拼写错误或其他简单的疏忽。
  • 我已经用终端检查了它。我也尝试过 plt.savefig('result.png') 希望该文件将保存到被认为是当前的目录中,但这种方式也行不通。
  • 你能从 Python 正常写入该目录吗?也就是说,with open(<full path>, "w") as fp: fp.write("random")?
  • 是的,你的写表达式工作正常,我的 plt.savefig 失败,文件路径相同:(
  • 嗨!我有点晚了!我遇到了同样的问题,就我而言,名称中有一些“特殊”字符。特别是有一个“/”。

标签: python ubuntu matplotlib anaconda


【解决方案1】:

在我的情况下,问题是领先的/。所以以下应该工作:

plt.savefig("home/username/PycharmProjects/sandbox/images/result.png")

【讨论】:

    【解决方案2】:

    大多数与保存文件和绘图相关的错误都可以通过

    来避免
    • 绘制图表,
    • 构建保存目录的路径而不将其硬编码为字符串,
    • 保存绘图。

    独立于您的操作系统,您可以获取您的 python 脚本正在运行的当前目录,并从那里,您可以将您的文件保存在该目录中或在该位置创建一个子文件夹来保存您的文件。两种实现都在下面描述使用os library

    导入所需的库

    import os
    import matplotlib.pyplot as plt
    

    绘制图表

    X = [_ for _ in range(100)]
    plt.plot(X)
    plt.title('A plot of 1st 100 numbers')
    

    获取当前工作目录路径

    current_directory_path = os.getcwd()
    file_name = 'result.png'
    

    这将获取您当前目录路径的路径 正在运行 python 脚本。无需硬编码路径 如果您忘记了,在大多数情况下可能会导致错误 为您的操作系统转义特殊字符或适当的斜杠。

    构建file_path保存到当前工作目录

    file_path = os.path.join(current_directory_path, file_name)
    

    在 Windows 中,您会得到类似 c:\\Users\\...\\result.png 的信息。 这在 linux 中可能有所不同。

    构建文件路径以将绘图保存在子文件夹中

    subfolder_path = os.path.join(current_directory_path, 'subfolder')
    
    if not os.path.exists(subfolder_path):
        os.makedirs(subfolder_path)
    
    file_path = os.path.join(subfolder_path, file_name)
    

    上面检查'subfolder'目录是否存在于当前 如果没有目录,则创建它。在 Windows 中,你会得到类似的东西 c:\\Users\\...\\subfolder\\result.png'

    保存绘图

    plt.savefig(file_path)
    

    最后,文件被正确保存到指定的file_path。

    【讨论】:

      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多