2016-04-23 3 views
0

Я должен загрузить базу данных для задания, но у меня возникла проблема. Эти инструкции:Python IOError, не может найти файл в каталоге

Это приложение будет считывать данные из почтового ящика (mbox.txt) подсчитывать сообщения номера электронной почты в организации (т.е. имени домена адреса электронной почты ) с использованием базы данных с помощью следующей схемы для поддержания считается.

CREATE TABLE Граф (org TEXT, count 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.FileType для type аргумента argparse.add_argument.

Смежные вопросы