使用Python如何正确读取资源文件

  介绍

这篇文章将为大家详细讲解有关使用Python如何正确读取资源文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

我们知道,当你把一个资源文件和一个. py文件放在一起的时候,你可以直接在这个。py文件中,使用文件名读取它,例如:

张开(& # 39;用法# 39;)f:
  内容=f.read ()
  打印(& # 39;文件中的内容为:& # 39;,内容)

运行效果如下图所示:

使用Python如何正确读取资源文件

但请注意,这里我是直接运行的read.py这个文件。如果资源文件是存放在一个包(包)里面,然后我们在外面调用这个包里面的py文件会怎么样呢,# 63;我们试一试:

使用Python如何正确读取资源文件

可以看的到,现在Python已经找不到这个文件了。这是因为,我们的入口程序在~/get_title文件夹中,而用法文件在~/get_title/util文件夹中,因为我们运行的是主要的。py,所以Python会在~/get_title文件夹里面寻找用法,自然就找不到了。

如果是引用包里面的其他模块,可以使用相对路径。例如引用同一个包里面名叫sql_util。py里面康涅狄格州的对象,我们可以直接写为从.sql_util进口康涅狄格州。但是资源文件不能使用相对路径来读取,如下图所示:

使用Python如何正确读取资源文件

有一个笨办法,就是获取当前正在运行的这一行代码所在的文件夹,然后拼出资源文件的完整路径。修改读。py文件:

导入操作系统   def read_file ():   current_folder=os.path.dirname (__file__)   resource_path=os.path。加入(current_folder & # 39;用法# 39;)   张开(resource_path) f:   内容=f.read ()   打印(& # 39;文件中的内容为:& # 39;,内容)

运行效果如下图所示:

使用Python如何正确读取资源文件

但这样写稍显麻烦。

如果你的Python版本不低于3.7,那么你可以使用importlib。资源来快速读取资源文件:

从importlib进口资源
  resources.open_text(& # 39;包名& # 39;,& # 39;资源路径& # 39;)f:
  内容=f.read () 

运行效果如下图所示:

使用Python如何正确读取资源文件

如果你读取的不是文本文件,那么你可以把resources.open_text改成resources.open_binary,从而读取二进制文件。

但需要注意的是,资源文件必须放在包的根目录。这样才能正确读取。如果资源文件在包内部的子目录中,importlib.resources是不能直接读取的。

例如我们的包为实效,里面有一个文件夹叫做deep_folder,资源文件用法放在deep_folder中,此时,我们如果要读取这个资源文件,就必须把在deep_folder文件夹中创建一个init.py,把它也变成一个包,然后修改读。py的代码:

从importlib进口资源   从。进口deep_folder      def read_file ():   与资源。open_text (deep_folder & # 39;用法# 39;)f:   内容=f.read ()   打印(& # 39;文件中的内容为:& # 39;,内容)

把deep_folder作为一个模块导入,然后把这个模块作为资源。open_text的第一个参数。这样才能正确读取,如下图所示:

使用Python如何正确读取资源文件

关于使用Python如何正确读取资源文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

使用Python如何正确读取资源文件