2016-04-23 63 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

相關問題