2016-04-23 79 views
0

我应该为作业上传数据库,但我遇到了问题。这些都是说明:Python IOError,无法在目录中找到文件

这个应用程序将使用一个数据库使用下面的模式来维持读取邮箱数据(mbox.txt)计数每组织 多封电子邮件(邮件 地址即域名) 计数。

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

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

由于示例代码使用UPDATE声明和记录每一个在循环中读取犯 结果到数据库,它 可能需要长达几分钟的时间来处理所有的数据。 坚持要求每次调用它时,将所有数据写入磁盘。

,它不断给我的错误信息是:

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

+0

在说明中,它还说:“您可以使用此代码作为您的应用程序的起点:[http://www.pythonlearn.com/code/emaildb.py][1]。” – nk55

+0

你是从保存它们的目录运行你的代码吗? – tijko

+0

首先想到用任何语言学习都是为了阅读错误信息(很好,你把它放在这里)。它正在回答你的问题:你的代码无法找到一个名为'mbox.txt'的文件。 –

回答

0

你的代码有问题找到的文件mbox.txt。它与 没有任何关系,因为你还没有运行到目前为止。

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

import os.path 

fname = "mbox.txt" 

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

如果你碰巧运行情况的代码,该文件不存在,它会抛出一个 AssertionError告诉你什么地方出了错。

这个例外是非常实用的,因为它会告诉你什么假设不成立,你知道什么是 ,要修复什么。

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.FileTypetype参数argparse.add_argument

相关问题