尝试打开文件以在Python 3中读取时获取FileNotFoundError

时间:2019-04-28 23:00:56

标签: python python-3.x python-os

我正在使用OS模块打开文件进行读取,但出现FileNotFoundError。

我正在尝试

  • 在给定的子目录中找到所有包含单词“ mda”的文件
  • 对于每个文件,在文件名中紧接两个“ _”(表示称为SIC的特定代码)之后的字符串
  • 打开该文件以供阅读
  • 稍后将写入主文件以进行一些Mapreduce处理

当我尝试打开时,出现以下错误:

 File "parse_mda_SIC.py", line 16, in <module>
     f = open(file, 'r')
FileNotFoundError: [Errno 2] No such file or directory:        
'mda_3357_2017-03-08_1000230_000143774917004005__3357.txt'

我怀疑问题是“文件”变量还是它在一个目录下,但我为什么在使用OS寻址该较低目录时会发生这种情况,我感到困惑。

我有以下代码:

working_dir = "data/"

for file in os.listdir(working_dir):
    if (file.find("mda") != -1):
        SIC = re.findall("__(\d+)", file)
        f = open(file, 'r')

我希望能够毫无问题地打开文件,然后从数据创建我的列表。感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

这应该为您工作。您需要附加目录,因为它会将其视为代码顶部的文件名,并且只会在代码所在的目录中显示该文件名。

for file in os.listdir(working_dir):
    if (file.find("mda") != -1):
        SIC = re.findall("__(\d+)", file)
        f = open(os.path.join(working_dir, file), 'r')

使用with的上下文管理器打开文件也是一种好习惯,因为它将在不再需要时关闭文件:

for file in os.listdir(working_dir):
    if (file.find("mda") != -1):
        SIC = re.findall("__(\d+)", file)
        with open(os.path.join(working_dir, file), 'r') as f:
            # do stuff with f here

答案 1 :(得分:0)

您需要添加目录,如下所示:

f = open(os.path.join(working_dir, file, 'r'))