Reputation: 11
def mapping(list_of_files , list_of_folders, max1):
print max1
max1 += 1
if len(list_of_folders) == 0:
folder = os.walk(os.getcwd()).next()[1]
files = os.listdir(os.getcwd())
elif len(list_of_files) != 0:
print list_of_folders[0]
## for some reason this of line of code stops working without error on 20150 iteration
folder = next(os.walk(os.getcwd() +'/' + list_of_folders[0]))[1]
#folder = os.walk(os.getcwd() +'/' + list_of_folders[0] ).next()[1]
#print os.listdir(os.getcwd() + '/' +list_of_folders[0])
files = os.listdir(os.getcwd() + '/' +list_of_folders[0])
length = len(folder)
length1 = len (files)
y = 0
if folder == files:
del files[:]
else :
for x in range(length):
while y != length1:
if files[y] == folder[x]:
files.pop(y)
length1 = length1 - 1
y = 0
y += 1
y = 0
#print folder
#print files
if len(list_of_folders) == 0:
list_of_files = add_to_main_lists(list_of_files,'', files)
#print list_of_files
list_of_folders = add_to_main_lists(list_of_folders, '', folder)
#print list_of_folders
else:
list_of_files = add_to_main_lists(list_of_files,list_of_folders[0], files)
#print list_of_files
list_of_folders = add_to_main_lists(list_of_folders, list_of_folders[0], folder)
#print list_of_folders
list_of_folders.pop(0)
if len(list_of_folders) == 0:
print "got to here"
return list_of_files
else:
print "file length: " + str(len(list_of_files))
print "folder length: " + str(len(list_of_folders))
mapping(list_of_files , list_of_folders, max1)
return list_of_files
list_of_files = []
list_of_folders = []
list_of_files = mapping(list_of_files, list_of_folders , max1)
print (list_of_files)
The file is supposed to map out the folder the file is in and all of its sub directory. For some reason when the code runs its 20150 iteration, the line folder = next(os.walk(os.getcwd() +'/' + list_of_folders[0]))[1] terminates the code and doesn't throw any error. I'm at a loss. I run the code using sudo.
Upvotes: 1
Views: 111
Reputation: 5542
I can see two things in the code:
You're calling .next()
twice on the generator in the same iteration. I don't think this is what you want to do, your iteration will be parsing two different os.walk
outputs. Save the output of os.walk(os.getcwd()).next()
in a var and use that.
You're processing the list of files only if there's no folders in the current levels, because you're using elif
to do list_of_files
. You should use if
since you want to process it anyway.
Additionally, keep in mind that the end of the iterator throws a StopIteration
exception, so this is likely what's happening. You need to handle that exception.
Upvotes: 2