On Tuesday, March 14, 2017 at 4:42:39 AM UTC-7, Rhodri James wrote:
> On 13/03/17 20:37, padawanweb...@gmail.com wrote:
> > On Monday, March 13, 2017 at 11:10:36 AM UTC-7, Rhodri James wrote:
> >> On 13/03/17 17:40, padawanweb...@gmail.com wrote:
> >>> Hello, I'm having a problem with a try except inside a while loop. The 
> >>> problem I see occuring has to do with an excel file the script tries to 
> >>> write to while the excel file is open. The exception captures and gives 
> >>> an error:
> >>>
> >>> OError: [Errno 13] Permission 
> >>> denied:'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'
> >>>
> >>> This is expected and is not the problem. However, the issue occurs when I 
> >>> close the excel file. As an example, if I run the script and the excel 
> >>> file is open thru 3 iterations, meaning that the script can't write to 
> >>> the excel file until the excel file is closed, then after the excel file 
> >>> is closed the script prints to the excel file 3 times. I don't need it to 
> >>> write to the excel file 3 times. I only need it to write just once. If 
> >>> the excel file is closed before I run the script than it works like its 
> >>> suppose too.
> >>> I hope I made my case clear. I look forward to some feedback. Any would 
> >>> be greatly appreciated!
> >>
> >> When you say "...the excel file is open thru 3 iterations", what do you
> >> mean?  Three iterations of what?  You haven't shown us a loop, so it's
> >> not obvious.
> >>
> >> How do you know it prints (writes?) to the excel file three times?
> >> Again, there's nothing in the code snippet that would tell you.
> >>
> >>> here is part of the code:
> >>>
> >>>         connectionResults = None
> >>>         returnResults = 
> >>> InternetQualityTest.connectionTest(connectionResults)
> >>>         if returnResults == True:
> >>>             try:
> >>>                 execfile('assetMapping.py')
> >>>                 time.sleep(4)
> >>>                 sys.exit()
> >>>             except Exception as e:
> >>>                 print "error",e
> >>>                 time.sleep(20)
> >>
> >> This looks plausible, though honestly the execfile makes me feel icky
> >> for unrelated reasons.  I repeat, though; this isn't a loop, and my
> >> crystal ball isn't up to telling me how it gets invoked.
> >>
> >>> FYI: The assetMapping.py runs another module from inside, and it's this 
> >>> module running from assetMapping that writes to the excel file.
> >>>
> >>
> >>
> >> --
> >> Rhodri James *-* Kynesim Ltd
> >
> > I apologize if I short-changed you with the code. It's a bigger piece of 
> > code and I thought maybe with my explanation and the piece I showed it 
> > would be enough. I was wrong. Here is the rest. I apologize in advance if 
> > there are any more confusions.
> >
> > I do appreciate your help! Thanks in advance :-)
> >
> >
> > THIS IS: Main.py
> >
> > import InternetQualityTest
> > import assetMapping
> > import time
> > import sys
> >
> >
> >
> > if __name__ == '__main__':
> >
> >     while True:
> >
> >         connectionResults = None
> >         returnResults = 
> > InternetQualityTest.connectionTest(connectionResults)
> >         if returnResults == True:
> >             try:
> >                 execfile('assetMapping.py')
> >                 time.sleep(4)
> >                 sys.exit()
> >             except Exception as e:
> >                 print "error",e
> >                 time.sleep(20)
> 
> [Large amount of code with no suspicious-looking loops snipped]
> 
> Thanks for the extra code.  It's hard to get the balance right between 
> giving people enough information to help and giving us so much 
> information we can't see the wood for the trees.
> 
> Anyway, I'll go back to my questions.  What output do you have that 
> convinces you that assetMapping.py is invoked three (or however many) 
> times while the excel file is open?  What output do you have that 
> convinces you that it then writes three (or however many) times?  As far 
> as I can tell, the loop above can only repeat the call to execfile() if 
> it catches an exception: what were those exceptions?
> 
> -- 
> Rhodri James *-* Kynesim Ltd

As an example, If I have the excel file open and there is data that needs to be 
written to the excel file than the exception will catch this error: 

IOError: [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'

essentially, because the excel file is open during the process of writing to 
the excel file the "try" will keep attempting to write to the excel until its 
closed. So, if there were 5 attempts to write the data to the excel file, then 
after the excel file is closed that data will be written to the excel file n+1  
times (6 times). When this happens it shows 6 rows of the newly written data, 
however, it's the same data. To illustrate this here is the output from the 
shell line while the excel file is open and when it's closed. Note, When I 
close it it will say Report Updated. 

Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on 
win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
-1
Test = True

error [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'
-1
Test = True

error [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'
-1
Test = True

error [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'
-1
Test = True

error [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'
-1
Test = True

error [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'
-1
Test = True

Report Updated
>>> 


This is what's written to the excel file:

3       NB19097 24.221.51.225   376_SouthYard   373_Reseda      03-14-2017      
07:03:46
4       NB19097 24.221.51.225   376_SouthYard   373_Reseda      03-14-2017      
07:04:07
5       NB19097 24.221.51.225   376_SouthYard   373_Reseda      03-14-2017      
07:04:27
6       NB19097 24.221.51.225   376_SouthYard   373_Reseda      03-14-2017      
07:04:47
7       NB19097 24.221.51.225   376_SouthYard   373_Reseda      03-14-2017      
07:05:07
8       NB19097 24.221.51.225   376_SouthYard   373_Reseda      03-14-2017      
07:05:28

As you can see from the shell line the number of attempts made, and from the 
excel file the number of rows taken, that there is a correlation between the 
attempts and what gets written to the excel file. 

Also, if the excel file is closed during the writing process than the 
execfile() executes once because there is no exception, and the data only gets 
written once to the excel file. 

because the execfile() is inside the try except it catches this error:

error [Errno 13] Permission denied: 
'C:\\Users\\Administrator\\Desktop\\Version5.0\\DeviceTrackerReport45.xlsx'

which is just telling you that the data can't be written to the excel file 
because its open.

Thanks again Mr. James. I hope with my explanation I may have cleared up any 
confusion of the problem I'm facing.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to