[Tutor] wheel.py
Kirk Bailey
idiot1@netzero.net
Sat, 28 Sep 2002 23:02:35 -0400
Actually, AFTER I got everything right, it occurred to me to do it this way. But
it's working, and I have a kinkier idea cooking...
Magnus Lycka wrote:
>
> I'm taking the liberty to reinvent your wheel! ;)
>
> Since you are rewriting your file on every run
> to store your index number, you might as well swap
> the lines around instead. Always read from the top
> and place that line last when you are done. Skip
> the number.
>
> (Beware, untested code follows)
>
> ----
> fileName=sys.argv[1]
>
> f=open(fileName,'rt'),
> textList=f.readlines()
> f.close()
>
> firstLine = textList.pop(0)
> print firstLine.strip()
> textList.append(firstLine)
>
> f=open(file,'wt')
> f.writelines(textList)
> f.close()
> ----
>
> If the text file is big, it might be better
> to keep the index in a separate file and
> use your indexing scheme. Both files are
> now given as arguments. (Another option
> would be to have myfile.txt and myfile.ix
> etc.)
>
> BTW, the official way to open a file is now
> "file()". (See library reference.)
>
> ----
> indexFileName, dataFileName=sys.argv[1:3]
>
> # To make sure this works in Jython we must explicitly
> # close the file we'll later open for writing.
> # In CPython we could write it more compact as
> # index = int(file(indexFileName, 'rt').read())
> ixFile = file(indexFileName, 'rt')
> index = int(ixFile.read())
> ixFile.close()
>
> text = file(dataFileName, 'rt').readlines()
>
> try:
> print text[index].strip()
> index += 1
> except IndexError:
> print text[0].strip()
> index = 1
>
> ixFile = file(indexFileName, 'wt')
> ixFile.write(str(index))
> ixFile.close()
> ----
>
> Finally, if the file is very big, we don't want to read
> in more than we have to...
>
> ----
> indexFileName, dataFileName=sys.argv[1:3]
>
> ixFile = file(indexFileName, 'rt')
> index = int(ixFile.read())
> ixFile.close()
>
> i = 0
> for line in file(dataFileName, 'rt'):
> if i == 0: lineZero = line
> if i == index:
> print line.strip()
> index += 1
> break
> i += 1
> else:
> print lineZero.strip()
> index = 1
>
> ixFile = file(indexFileName, 'wt')
> ixFile.write(str(index))
> ixFile.close()
> ----
>
> If it's even bigger...we'll use a database of some
> sort. import anydbm etc... Another day...
>
> --
> Magnus Lycka, Thinkware AB
> Alvans vag 99, SE-907 50 UMEA, SWEDEN
> phone: int+46 70 582 80 65, fax: int+46 70 612 80 65
> http://www.thinkware.se/ mailto:magnus@thinkware.se
--
end
Respectfully,
Kirk D Bailey
+---------------------"Thou Art Free." -Eris-----------------------+
| http://www.howlermonkey.net mailto:highprimate@howlermonkey.net |
| KILL spam dead! http://www.scambusters.org/stopspam/#Pledge |
| http://www.tinylist.org +--------+ mailto:grumpy@tinylist.org |
+------------------Thinking| NORMAL |Thinking----------------------+
+--------+
-------------------------------------------
Introducing NetZero Long Distance
Unlimited Long Distance only $29.95/ month!
Sign Up Today! www.netzerolongdistance.com