I am running my python code on Windows and trying to traverse and store all the file name with their paths in a file. But the Windows has a restriction of 260 characters.
os.chdir(self.config.Root_Directory_Path())
for root, dirs, files in os.walk("."):
file_list.extend( join(root,f) for f in files )
file_name_sorted = sorted(file_list)
#file_sorted = sorted(file_list, key=getsize)
#time.strftime("%m/%d/%Y %I:%M:%S %p" ,time.localtime(os.path.getmtime(file)))
f = open(self.config.Client_Local_Status(),'wb')
for file_name in file_name_sorted:
if (os.path.exists(file_name)):
#f.write((str(os.path.getmtime(file_name)) + "|" + file_name + "\n").encode('utf-8'))
pass
else:
print(file_name + "|" + str(len(file_name) + len(originalPath)) + "\n")
print(os.path.getmtime(file_name))
#f.write((str(os.path.getmtime(file_name)) + "|" + file_name + "\n").encode('utf-8'))
f.close()
Because of the error, os.path.getmtime(file_name) throws an exception file not found. How can I overcome this problem? I tried using //?/ character as prefix, as suggested in
http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx
But was not successful in using //?/ character.
I tried using os.path.getmtime(“////?//” + file_name) #Threw an error invalid path
Please suggest a fix
The problem here is that you’re using a relative path. The
\\?\prefix can only be applied to absolute paths. As the documentation says:The fix is simple. Instead of this:
do this:
You cannot use forward slashes. It may or may not be legal to add an extra backslash, in which case you can get away with
r'\\?\\'instead of doubling the double backslash. Try it and see (but make sure to test both drive-prefixed paths likeC:\fooand UNC paths like\\server\share\bar)… But the doubled-backslash version above should definitely work.