我应该为作业上传一个数据库,但我遇到了问题。这些是说明:
此应用程序将读取邮箱数据(
mbox.txt
)计数 每个组织编号的电子邮件(即电子邮件的域名) 使用具有以下模式的数据库来维护 计数。
CREATE TABLE
计数(org TEXT
,count 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
答案 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
告诉你出了什么问题。
这个例外非常实用,因为它会告诉你什么假设不成立 你知道吗,要解决什么。