如何获取Python包内文件内容?PyDev Console路径问题求助
解决PyDev Console中Python读取包内文件的路径问题
嘿,我刚踩过几乎一模一样的坑!PyDev Console的工作目录设定确实容易让人懵,我来给你捋清楚怎么搞定这个问题。
首先得明白为啥你之前的方法都失效:PyDev Console默认的工作目录不是你的story.py所在的文件夹,而是你的项目根目录(或者PyDev默认配置的其他路径)。所以你用os.getcwd()拿到的是根目录,再拼../starttext自然找不到文件;而sys.argv[0]在Console环境下指向的是PyDev的内部启动脚本,根本不是你的story.py,用它来凑路径肯定不对。
正确姿势:用__file__获取脚本绝对路径
__file__是Python内置的属性,它会返回当前脚本(也就是story.py)的绝对路径,基于这个来构造文件路径就不会出错了。
假设你的项目路径结构是这样的:
你的项目名/ 你的包目录/ story.py starttext # 你要读取的预定义文本文件
那你可以在story.py里这么写:
import os # 获取story.py所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接starttext的完整路径(自动适配Windows/Linux路径分隔符) text_file_path = os.path.join(script_dir, "starttext") # 读取文件内容 try: with open(text_file_path, "r", encoding="utf-8") as f: content = f.read() print("读取到的内容:", content) except FileNotFoundError as e: print(f"如果还是报错,先检查这个路径是否正确:{text_file_path}") raise e
为啥这个方法靠谱?
os.path.abspath(__file__)会把__file__转换成绝对路径,不管你从哪里运行脚本都能拿到正确的位置。os.path.join会自动处理不同操作系统的路径分隔符(Windows的\和Linux的/),避免手动拼路径时踩分隔符的坑。
把这段代码放到story.py里,再去PyDev Console运行试试,应该就能顺利读取到starttext里的内容啦!
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

