2017-05-21 10 views
1

は私の問題を引き起こしているコードのサンプルです:のPython 3.5.2 FileNotFoundError:[errnoを2]いいえそのようなファイルまたはディレクトリ:ここにあるtest.txt "

import string 

letters = string.ascii_lowercase  

offset = ord('a') 


def countFrequency(file_handle): 
"""Traverse a file and compute the number of occurences of each letter 
return results as a simple 26 element list of integers.""" 
results = [0] * len(letters)  
for line in file_handle: #read line from file 
    for char in line:  #read char by char from above line 
     char = char.lower() #cnverting char in lowercase 
     if char in letters: #checking if char exist i letters 
      results[ord(char) - offset] += 1 

return results 


#sorting the both lists frequency and letter list  
def sort(ltr,frequency): 
for x in xrange(len(frequency)): 
    for y in xrange(len(frequency)-1): 
     if frequency[y]<frequency[y+1]: # on true swap values 
      t=frequency[y+1] 
      frequency[y+1]=frequency[y] 
      frequency[y]=t 
      t=ltr[y+1] 
      ltr[y+1]=ltr[y] 
      ltr[y]=t 

#print the sorted results 
for i in xrange(len(ltr)): 
    if(frequency[i]==0): 
     break; 
    print "%s=%d" % (ltr[i], frequency[i]) 



if __name__ == "__main__": 
filename = str(input('Enter file name(e.g. test.txt):')) 
#file path 
sourcedata = open(filename) 
#fucntion return frequency of letters 
frequency = countFrequency(sourcedata) 
#creating list of letters (a-z) 
ltrs= [0] * len(letters) 
for i in xrange(len(frequency)): 
    ltrs[i]=chr(i + ord('a')) 
#sorting the result in descending order 
sort(ltrs,frequency) 

私はPythonを書くことになっています入力ファイル名を入力するプロンプトが表示されます。プログラムは、名前付きファイルを開き、大文字小文字を無視して、その中の各文字の頻度を計算する必要があります。結果として得られるテーブルはソートされた順序で画面に出力されます。 「並べ替えられた注文」とは、最も頻繁に表示される文字を最初に表示し、その後に2番目に頻繁に表示するということです。 これは私がこれまでに得たものであるが、私はそれを実行していると私は受け取ったファイル名を入力しようとすると:

sourcedata = open(filename) #file path FileNotFoundError: [Errno 2] No such file or directory: 'filename'

このエラーをケーシング何ができますか?この問題を解決するにはどうすればよいですか?

+0

FileNotFoundErrorは自明です。ファイルパスを確認してください。 – ferit

+0

テストファイル以外のディレクトリでプログラムを実行している可能性があります。ファイルパス全体を指定してみてください。 –

+0

Python 3を使用していますが、コードはPython 2です。どちらのバージョンでも入力の扱いが異なります。だからどのバージョンを実行するのですか? –

答えて

0

あなたは完全な、正しいパスを使用している、あなたが試すことができます提供:さらに

import os 
filename = input('Enter file name(e.g. test.txt):') 
filename = os.path.join(filename) 
sourcedata = open(filename) 

、あなたが実際に動作しません、Pythonの3+、print "%s=%d" % (ltr[i], frequency[i])を使用している場合。

print('{}={}'.format(ltr[i], frequency[i])) 
0

絶対パスを使用してください(file.txtの代わりに/Path/to/your/file.txtを使用してください)。 @Trenton_mが言ったようにあなたはは、Python 2とPython 3 でFileNotFoundError、それ意志の仕事を得ることはありませんので、絶対パスを使用すると、相対パスを使用するよりもはるかに優れている、

print "%s=%d" % (ltr[i], frequency[i]) 

Python 3では動作しません。

print('{}={}'.format(ltr[i], frequency[i])) 
関連する問題