2015-05-17 92 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

相关问题