Python脚本运行未打印pride.txt文本文件内容的原因及解决方案
问题原因
出现该现象的核心原因是Python中相对路径的查找规则和你预期的不一致:
你以为open("pride.txt")会找脚本文件同级目录下的书籍文件,但实际上Python解析相对路径时,参考的是「你执行Python命令时终端所在的工作目录」,不是脚本自身存放的目录。
这种情况下程序没有报FileNotFoundError,是因为你运行脚本的工作目录下刚好存在一个同名的空pride.txt文件,程序实际打开的是这个空文件,自然读不到任何书籍内容。
小概率诱因:
- 你存放书籍的
pride.txt本身保存失败,文件大小为0字节,本身就是空文件 - 系统开启了「隐藏已知文件类型扩展名」,你看到的
pride.txt实际文件名是pride.txt.txt等错误名称,工作目录下恰好有空的同名文件被匹配到
解决步骤
- 先定位实际打开的文件位置,不要靠主观判断,在原有代码中加几行调试信息,确认文件路径和读取长度:
import os f = open("pride.txt", "r", encoding="UTF-8") # 打印当前打开文件的绝对路径 print("实际读取的文件路径:", os.path.abspath(f.name)) s = f.read() # 打印读取到的内容长度 print("读取内容字节长度:", len(s)) f.close() print("Contents of file:", s)
运行后如果打印的路径不是你存放书籍的那个文件路径,就坐实了找错文件的问题。
- 改用绝对路径写法,固定读取脚本同级目录下的书籍文件,彻底规避工作目录变化带来的路径错误,推荐用
with上下文语法自动处理文件关闭,避免资源泄漏:
import os # 获取当前脚本自身所在的绝对目录 script_folder = os.path.dirname(os.path.abspath(__file__)) # 拼接得到书籍文件的完整绝对路径 book_path = os.path.join(script_folder, "pride.txt") # 自动管理文件打开和关闭 with open(book_path, "r", encoding="UTF-8") as f: content = f.read() print("Contents of file:", content)
- 若调试后确认路径完全正确,但读取长度还是0,就右键查看你存书籍的
pride.txt属性,确认文件大小不是0字节,如果是空文件就重新把书籍内容写入保存即可。 - 打开系统的文件扩展名显示功能,确认文件名确实是
pride.txt,没有被隐藏的多余后缀。
内容的提问来源于stack exchange,提问作者asvalk1672
相关产品推荐
相关产品推荐

