Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion need help using enumerate ??
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Eric_Dexter@msn.com  
View profile  
 More options Aug 22 2008, 10:28 am
Newsgroups: comp.lang.python
From: "Eric_Dex...@msn.com" <Eric_Dex...@msn.com>
Date: Fri, 22 Aug 2008 07:28:21 -0700 (PDT)
Local: Fri, Aug 22 2008 10:28 am
Subject: Re: need help using enumerate ??
On Aug 22, 7:56 am, Chris <cwi...@gmail.com> wrote:

> On Aug 22, 1:14 pm, "Eric_Dex...@msn.com" <Eric_Dex...@msn.com> wrote:

> > I am trying to take some data in   file that looks like this

> > command colnum_1 columnum_2

> > and look for the command and then cange the value in the collum(word)
> > number indicated.  I am under
> > the impression I need enumerate but I am not sure what to do with it
> > any help would be nice.

> > import sys

> > parse1filerows = []
> > csoundrows = []

> > filename = sys.argv[0]
> > number = sys.argv[1]
> > outfile = open('test.sco','w')

> > infile = open(filename, 'r')
> > for line in infile:
> >   csoundrows.append(line.split())
> > parsefile = open('parsefile1.txt', 'r')
> > for line in parsefile:
> >   parsefile1rows.append(line.split())
> > for row in csoundrows:
> >   for prow in parsefile1rows:
> >     test = 0
> >     if parsefile1[prow][0] in csoundrow[row]:
> >       for pcol in parsefile1[prow]:
> >         if test == 1:
> >           csoundrows[row][int(pcol)] = str(int(csoundrows[row]
> > [int(pcol)] + number)
> > for row in csoundrows:
> >   for word in rows:
> >     outfile.write(row)

> Rather confusing code there and non-functional.

> You never close your file handles, when finished with a file use the
> .close() method
> sys.argv[0]  <-- the first element is the name of your .py file and
> not
>                  the first argument you supply.
> When iterating over a list like csoundrows you don't need to do
> for row in csoundrows:
>     if ... in csoundrow[row]:  # This will try to use 'row' as an
> index

>     but rather

>     if ... in row:

> Now, this is how I intepretted your question.

> from sys import argv, exit

> if len(argv) != 3:
>     """Ensure the correct number of arguments are supplied"""
>     exit('Incorrect number of arguments.')

> try:
>     """Checks if the Input file exists and exits if open fails."""
>     inFile = open(argv[1], 'rb')
> except IOError:
>     exit('Input file does not exist.')

> if not argv[2].isdigit():
>     """Argument #2 needs to be a number"""
>     exit('Column number is not numerical.')

There is a number to be added to the text in that column...  That is a
slight edit though it still needs to be a number

> idx = int(argv[2])
> outFile = open('test.sco', 'wb')

> """Assuming your data in the parse file was a set of key, value pairs
>    to be used for replacement in the input file.  Just splitting on
> the
>    basic space and assigning the first element as the key and the rest
> of
>    the string as the value to be used for replacement.
> """
> replaceData = {}
> for line in open('replacementInstructions.txt', 'rb'):
>     key = line.strip().split(' ')[0]
>     value = line.strip().split(' ')[1:]
>     replaceData[key] = value

> """Iterate over your input file, split the line into it's component
> parts
>    and then lookup if the first element 'command' is contained in the
>    replacement data and if so change the data.
>    If you want all input to be saved into your output file, just
> dedent
>    the 'outFile.write' line by one level and then all data will be
> saved.
> """
> for line in inFile:
>     record = line.strip().split(' ')
>     if record[0] in parseRows:
>         record[idx] = parseRows[record[0]]
>         outFile.write('%s\n' % ' '.join(record) )

> inFile.close()
> outFile.close()- Hide quoted text -

> - Show quoted text -

I need to first find if the csound command is in the line and then go
to the n'th word (a number) and add another number to it.  I may need
to do that for up to 5 values in the line (maybe more for cound
commands that haven't been thought up yet).  I then convert the data
back to text.  These all point to ftable's  when I renumber them i.e.
f1 to f3 I have to renumber them in the program file as well.  .orc
and .sco.

If I load in a 5 from the file it means I have to load the data from
the 5th column and add a number to it and save it back as text.  I
have found that the .close is automatically called and sometimes you
can try to close a closed file causing an error..  So I let python do
it..  instead of coding this in awk I try to emulate grid code that I
have..  I will study this though and it does have code that is useful
and helpful.

this is the easy command list I will try to do lists with var number
of commands by counting the number of words in a line ,'s exc..


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.