0

なぜこのようなエラーが発生するのかを理解しようとしています。4 つのファイルを含む別のディレクトリに対してまったく同じコードを実行しましたが、問題なく動作しています。今回は別のディレクトリを使用すると、このエラーが発生します

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

ファイルが存在していても。これは、1つのディレクトリでは正常に機能しますが、他のディレクトリでは機能しないコードです。両方のディレクトリが存在するため、4つのファイルが存在します

行のエラー:「with open((file_name),'r') as 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

ユーザーは 4 つのファイルのパスを入力します。私は 1 つのディレクトリでテストしましたが、パスが正しく、ファイルが存在することを 100% 確信している他のディレクトリでは機能しませんでした。

事前にどうもありがとう

4

2 に答える 2

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
于 2015-05-17T08:59:51.737 に答える
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
于 2015-05-17T08:58:11.617 に答える