Python IOError,无法在目录中找到文件

时间:2016-04-23 15:37:51

标签: python

我应该为作业上传一个数据库,但我遇到了问题。这些是说明:

  

此应用程序将读取邮箱数据(mbox.txt)计数   每个组织编号的电子邮件(即电子邮件的域名)   使用具有以下模式的数据库来维护   计数。

     

CREATE TABLE计数(org TEXTcount INTEGER)当你运行时   程序在mbox.txt上传上面生成的数据库文件   等级。如果您在测试中多次运行程序或使用   不同的文件,确保在每次运行之前清空数据。

     

此应用程序的数据文件与以前相同   作业:http://www.pythonlearn.com/code/mbox.txt

     

因为示例代码使用UPDATE语句并提交   将结果发送到数据库中,因为每个记录都是在循环中读取的   处理所有数据可能需要几分钟的时间。该   commit坚持每次都将所有数据完全写入磁盘   它叫做。

它一直向我发送的错误消息是:

Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    fh = open(fname)
IOError: [Errno 2] No such file or directory: 'mbox.txt'

我将它们保存在同一个文件夹中。

有人可以帮忙吗?

我输入的代码是here

2 个答案:

答案 0 :(得分:0)

您的代码正在查找名为mbox.txt但未找到的文件。我的猜测是open(fname)在当前目录中查找mbox.txt,但代码是从不同的目录运行的。

这样的事情可能有助于解决您的问题:

import os

# figure out directory of the Python file
mdir = os.path.dirname(os.path.abspath(__file__))

# assuming that mbox.txt is in the same folder as the Python file,
# get the path to that file
mpath = os.path.join(mdir, 'mbox.txt')

# open the file
with open(mpath, 'r') as fh:
    # ...

另一种方法是使用命令行参数。也许您想要使用其他文件,例如mbox.txt。在这些情况下,您可以接受mbox.txt的路径作为命令行选项:

import argparse

argp = argparse.ArgumentParser(description='foo the mbox')
argp.add_argument('mbox_path', help='Path to mbox file')

opts = argp.parse_args()

with open(opts.mbox_path, 'r') as fh:
    # ...

或者获得更高级用户并使用argparse.FileType type参数argparse.add_argument

答案 1 :(得分:0)

您的代码在查找文件mbox.txt时遇到问题。它无关 到目前为止你没有运行数据库中的任何内容。

良好的做法(至少在开发过程中)是确保你的事情 希望是真的是真的。为此,我将使用以下代码 确保文件确实存在。

import os.path

fname = "mbox.txt"

assert os.path.exists(fname), "The file shall exist"

如果您碰巧在情境中运行代码,该文件不存在,它将抛出一个 AssertionError告诉你出了什么问题。

这个例外非常实用,因为它会告诉你什么假设不成立 你知道吗,要解决什么。