2012-02-06 14 views
1

ディレクトリから複数のcsvファイルを読み込み、各ファイルを分析するプログラムを作成しています。それについての奇妙なことは、私はReadDirectory機能を無視してReadInFile機能を使用する場合、それは完璧に動作している"エラー:ファイルまたはディレクトリが存在しません"しかし、os.listdirによって確認されているように存在します。

# Function reads in files and saves data into 2 dimensional array 
def ReadInFiles(name): 
    try: 
    data = [] 
    fname = csv.reader(open(name, 'r')) 
    #print 'read in file: ' + str(fname) 
    rowCount = 0 
    for row in fname: 
     if rowCount != 0: # skip headings 
     data.append(row) 
     rowCount += 1 
     #print name + ' ' + str(row) + ' read in successfully \n'     
    except IOError: "Can't read files" 


    return data 


#Function reads in files in a folder 
def ReadDirectory (dirName): 
    try: 
    Data = []   
    for files in os.listdir(dirName): 
     print '\n FILE: ' + files 
     Data = ReadInFiles(files) 
     AnalyzeData(Data, daysElapsed, columns = 4) 

    except IOError: 
     print 'Directory does not exist!' 

    return 

(ファイルは問題なく読み込まれる)が、私はReadDirectoryからReadInFunctionを呼び出した後:私は、これらの機能を持っていますIOError:[Errno2]ファイルまたはディレクトリが存在しません:logfile.csv os.listdirを使用してディレクトリ内のファイルを一覧表示すると、完全に機能します。

私はソースコードを含むディレクトリのサブディレクトリとしてcsvファイルを含むフォルダを持っています。私はソースコードディレクトリにもファイルのコピーを置くとスクリプトが完璧に動作することに気がつきましたが、それらのコピーを削除するとエラーが再び出るようになりました。

私は以前の投稿を検索して二重スラッシュを試しましたが、/何も動作しません。私はフォルダのアクセス許可をチェックしたが、どちらも役に立ちません。

ご協力いただければ幸いです!

ありがとうございます。

P.S.私は自分の可能性の悪いコード

+1

サイドノートでは: '試すにラップ/ except'あなたは上げるかもしれない恐れる最小限のコードをブロックすることをお勧めします例外。 –

答えて

6

os.listdir()戻っファイルがでているディレクトリの名前が含まれていない裸のファイル名を言い訳してくださいパイソンにかなり新しいです

おそらく意味:。

Data = ReadInFiles(os.path.join(dirName, files)) 

PS 1つのファイル名を参照すると、filesが複数の理由は何ですか?

P.P.S.次exceptブロックは、便利な何かをして静かにすべてのエラーを無視していません:

except IOError: "Can't read files" 
関連する問題