2015-05-17 91 views
0

我想弄清楚爲什麼我有這樣的錯誤。我爲另一個包含四個文件的目錄運行了相同的確切代碼,它工作得很好。這次使用另一個目錄我得到錯誤這個錯誤IO錯誤:[錯誤2]沒有這樣的文件或目錄,即使該文件存在

IOError: [Errno 2] No such file or directory: 

即使文件存在。這裏是一個目錄工作正常,但不是其他一個或兩個目錄存在並且代碼,以便他們的四個文件

在行錯誤:「打開方式((FILE_NAME),‘R’)爲f:」

import sys,csv,os 
d_files = {} 
def Readfile(file_name): 
    d_files[file_name] = [] 
    print "file_name", file_name # printing the right name 
    with open((file_name),'r') as f: 
      reader=csv.reader((f),delimiter='\t') 
      for row in reader: 
       d_files[file_name].append(row) 
print 
try: 
    folder_input = raw_input("Please enter you folder name containing 4 files: ") 
except Name_Error: 
    pass 
for root,dirs,files in os.walk(folder_input): 
for file in files: 
    print "file",file # the right file name 
    pathname=os.path.join(root,file) 
    print "DIR: ",pathname # right directory inputted 
    print "Now, the file is being parsed" 
    Readfile(file) 
    print "Now, file", file, "is done parsed" 
    print 

用戶將鍵入四個文件的路徑,我測試了一個目錄的路徑,但它的工作,但沒有爲其他目錄,我100%確信路徑是正確的,並存在文件。

感謝很多提前

+0

您應該使用os.path.join(root,file)格式化的路徑名調用Readfile。我的意思是調用像讀取文件(路徑名) –

回答

0

嘗試以下操作:

import sys,csv,os 
d_files = {} 
def Readfile(file_name): 
    d_files[file_name] = [] 
    print "file_name", file_name # printing the right name 
    with open(file_name,'r') as f: 
      reader=csv.reader((f),delimiter='\t') 
      for row in reader: 
       d_files[file_name].append(row) 
print 
try: 
    folder_input = raw_input("Please enter you folder name containing 4 files: ") 
except Name_Error: 
    pass 
for root,dirs,files in os.walk(folder_input): 
    for file in files: 
     print "file",file # the right file name 
     pathname=os.path.join(root,file) 
     print "DIR: ",pathname # right directory inputted 
     print "Now, the file is being parsed" 
     # Make sure here you type a file name under same directory 
     # or full path: "C:\\boot.ini" or "/etc/passwd". Also make sure the user running the script has permission for the folder. 
     Readfile(file) 
     print "Now, file", file, "is done parsed" 
     print 
1

呼叫READFILE與路徑名來代替。如下所示:

import sys,csv,os 
d_files = {} 
def Readfile(file_name): 
    d_files[file_name] = [] 
    print "file_name", file_name # printing the right name 
    with open((file_name),'r') as f: 
      reader=csv.reader((f),delimiter='\t') 
      for row in reader: 
       d_files[file_name].append(row) 
print 
try: 
    folder_input = raw_input("Please enter you folder name containing 4 files: ") 
except Name_Error: 
    pass 
for root,dirs,files in os.walk(folder_input): 
for file in files: 
    print "file",file # the right file name 
    pathname=os.path.join(root,file) 
    print "DIR: ",pathname # right directory inputted 
    print "Now, the file is being parsed" 
    Readfile(pathname) 
    print "Now, file", file, "is done parsed" 
    print 
+0

非常感謝它解決了這個問題,但我的問題是爲什麼它爲一個目錄,但不是其他的? – BioInformatician

相關問題