Skip to main content
 首页 » 编程设计

python之使用 os.walk 迭代文件,但无法打开和打印文本文件

2025年05月04日10powertoolsteam

目前我正在尝试编写一个函数来遍历请求的目录并打印所有文件的所有文本。

现在,该函数用于将文件名显示为列表,因此文件肯定存在(并且文件中有文本)。

def PopularWordWalk (starting_dir, word_dict): 
    print ("In", os.path.abspath(starting_dir)) 
    os.chdir(os.path.abspath(starting_dir)) 
    for (this_dir,dir_names,file_names) in os.walk(starting_dir): 
        for file_name in file_names: 
            fpath = os.path.join(os.path.abspath(starting_dir), file_name) 
            fileobj = open(fpath, 'r') 
            text = fileobj.read() 
            print(text) 

这是我对目录内容进行一些检查后的输出:

>>> PopularWordWalk ('text_dir', word_dict) 
 
In /Users/normanwei/Documents/Python for Programmers/Homework 4/text_dir 
 
>>> os.listdir() 
['.DS_Store', 'cats.txt', 'zen_story.txt'] 

问题是每当我尝试打印文本时,我什么也得不到。最终我想通过其他一些功能推送文本,但截至目前,没有任何文本似乎没有实际意义。任何人都可以提供任何关于为什么没有文本出现的经验吗? (当尝试在空闲状态下手动打开文件/读取/存储和打印文本时,它会起作用,即如果我只是手动输入“cats.txt”而不是“file_name”) - 当前正在运行 python 3。

编辑 - 问题已得到解答 - 只需删除 os.chdir 行 - 请参阅 jojo 的回答以获取解释。

请您参考如下方法:

这行不行

file = open(file_name, 'r') 

因为它要求这些文件存在于您运行脚本的同一文件夹中。您必须提供这些文件的路径以及文件名

with open(os.path.join(starting_dir,file_name), 'r') as file: 
    #do stuff 

这样它将根据目录和文件名构建完整路径。