need help using enumerate ??
Eric_Dexter at msn.com
Eric_Dexter at msn.com
Fri Aug 22 10:28:21 EDT 2008
On Aug 22, 7:56 am, Chris <cwi... at gmail.com> wrote:
> On Aug 22, 1:14 pm, "Eric_Dex... at msn.com" <Eric_Dex... at 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..
More information about the Python-list
mailing list