I like the idea of using a dictionary as a solution to the problem.
The reason you are not seeing the nested loop run twice is because of the following:
>>> fd = file("C:\\defragreport.txt")
>>> fd.readlines()
['11/29/2005\n', '\n', '10:32:32 PM\n', '\n', 'Drive C: Defrag completed successfully\n', '\n']
>>> fd.readlines()
[]
>>>
When you call "readlines()" on the open file, it reads the contents of the complete file. Calling it again returns an empty …
[View More]list. You would have to open/read/close the file in each pass. Thus, the dictionary solution saves you from doing this.
Mike
> -----Original Message-----
> From: pythondotnet-bounces(a)python.org [mailto:pythondotnet-
> bounces(a)python.org] On Behalf Of Thane
> Sent: Wednesday, November 30, 2005 2:51 PM
> To: 'W G'; pythondotnet(a)python.org
> Subject: Re: [Python.NET] Nested Loops
>
> Read in the first file and create a dictionary (hash) of each line.
> Read in the second file and for each line see if the dictionary contains
> the
> item. This solution minimizes your I/O.
>
> Python 2.4b1 (#57, Oct 15 2004, 15:23:38) [MSC v.1310 32 bit (Intel)] on
> win32
> Type "help", "copyright", "credits" or "license" for more information.
> >>> refsymbol = [1,2,3,4]
> >>> refdict = dict()
> >>> for sym in refsymbol:
> ... refdict[sym] = sym
> ...
> >>> refdict
> {'a': 'a', 'c': 'c', 'b': 'b', 'd': 'd'}
> >>> showme = ['d','e','f']
> >>> for s in showme:
> ... if refdict.has_key(s):
> ... print s
> ...
> d
> >>>
>
> > -----Original Message-----
> > From: pythondotnet-bounces(a)python.org [mailto:pythondotnet-
> > bounces(a)python.org] On Behalf Of W G
> > Sent: Tuesday, November 29, 2005 2:53 PM
> > To: pythondotnet(a)python.org
> > Subject: [Python.NET] Nested Loops
> >
> > Hello,
> >
> > The follow code willl read lines of two text files. It supposed to take
> > the
> > first line of the first text file and compare it to all the lines of the
> > second text file, then go to the next line of the first text file and do
> > the
> > same and so on.
> >
> > The problem is that once the inner loop is finished, it never goes in
> that
> > loop again. Any suggestions?
> >
> > Thank you,
> > Wes
> >
> >
> > The Code:
> >
> >
> > for refSymbol in symbols.readlines():
> > for lookupSymbol in myfile.readlines():
> > showme = lookupSymbol.split('\t')
> > if showme[3] == refSymbol.strip():
> > priceNew.write(refSymbol.strip()+" "+showme[10])
> >
> >
> > _________________________________________________
> > Python.NET mailing list - PythonDotNet(a)python.org
> > http://mail.python.org/mailman/listinfo/pythondotnet
>
> _________________________________________________
> Python.NET mailing list - PythonDotNet(a)python.org
> http://mail.python.org/mailman/listinfo/pythondotnet
[View Less]
Hello,
The follow code willl read lines of two text files. It supposed to take the
first line of the first text file and compare it to all the lines of the
second text file, then go to the next line of the first text file and do the
same and so on.
The problem is that once the inner loop is finished, it never goes in that
loop again. Any suggestions?
Thank you,
Wes
The Code:
for refSymbol in symbols.readlines():
for lookupSymbol in myfile.readlines():
showme = …
[View More]lookupSymbol.split('\t')
if showme[3] == refSymbol.strip():
priceNew.write(refSymbol.strip()+" "+showme[10])
[View Less]
I've recently downloaded the .Net extensions for Python, and I've found
some bugs regarding constructors and exceptions.
My test code is below, with two classes. The first takes a single
integer argument, and generates a division by zero exception if this is
zero. The second class will always generate an exception. Both
constructors will write a line to stdout when run.
MyTest.cs:
----------------------------------------------------------------------
using System;
using System.…
[View More]Collections;
using System.Management;
namespace MyTest
{
public class Bad
{
public Bad(int i)
{
Console.WriteLine("Test");
int i2 = 1;
int i1 = i;
i2 = i2 / i1;
}
}
public class Bad2
{
public Bad2()
{
Console.WriteLine("Test");
int i2 = 1;
int i1 = 0;
i2 = i2 / i1;
}
}
}
----------------------------------------------------------------------
test.py:
----------------------------------------------------------------------
import CLR.MyTest
import sys, traceback
try:
print repr(CLR.MyTest.Bad(1))
except:
print '-'*60
traceback.print_exc()
print '-'*60
try:
print repr(CLR.MyTest.Bad(0))
except:
print '-'*60
traceback.print_exc()
print '-'*60
try:
print repr(CLR.MyTest.Bad2())
except:
print '-'*60
traceback.print_exc()
print '-'*60
try:
print repr(CLR.MyTest.Bad2(1))
except:
print '-'*60
traceback.print_exc()
print '-'*60
----------------------------------------------------------------------
Output from test.py:
----------------------------------------------------------------------
Test
<CLR.MyTest.Bad object at 0x00B3F7B0>
Test
------------------------------------------------------------
Traceback (most recent call last):
File "test.py", line 12, in ?
print repr(CLR.MyTest.Bad(0))
TypeError: no constructor matches given arguments
------------------------------------------------------------
Test
Test
------------------------------------------------------------
Traceback (most recent call last):
File "test.py", line 19, in ?
print repr(CLR.MyTest.Bad2())
DivideByZeroException: Attempted to divide by zero.
at MyTest.Bad2..ctor()
------------------------------------------------------------
Test
------------------------------------------------------------
Traceback (most recent call last):
File "test.py", line 26, in ?
print repr(CLR.MyTest.Bad2(1))
DivideByZeroException: Attempted to divide by zero.
at MyTest.Bad2..ctor()
------------------------------------------------------------
----------------------------------------------------------------------
The problems are as follows:
CLR.MyTest.Bad(0) -> Wrong traceback, wrong exception
CLR.MyTest.Bad2() -> Seems to call constructor twice (prints
"Test" twice.)
CLR.MyTest.Bad2(1) -> Calls constructor instead of raising
TypeError for bad number of arguments.
--
Dag Nummedal (Dag.Nummedal(a)ime.ntnu.no)
[View Less]