Search and write to .txt file
sajmikins at gmail.com
Tue Aug 11 17:44:04 CEST 2009
On Aug 11, 7:22 am, Helvin <helvin... at gmail.com> wrote:
> Hi everyone,
> I am writing some python script that should find a line which contains
> '1' in the data.txt file, then be able to move a certain number of
> lines down, before replacing a line. At the moment, I am able to find
> the line '1', but when I use f.seek to move, and then rewrite, what I
> write goes to the end of the .txt file, instead of being adjusted by
> my f.seek.
> Do you know what way I should take?
> Data.txt is a file of 3 lines:
> with open('data.txt', 'r+') as f:
> firstread = f.readlines() # Take a snapshot of initial file
> f.seek(0,0) # Go back to beginning and search
> for line in f:
> print line
> if line.find('1'):
> print 'line matched'
> f.seek(1,1) # Move one space along
> f.write('house\n') # f.write overwrites the exact
> number of bytes.
> break # leave loop once '1' is found
> f.seek(0,0) # Go back to beginning, and read
> data.txt again
> lastread = f.readlines()
> print 'firstread is', firstread
> print 'lastread is', lastread
> This shouldn't be too difficult, but I don't know how. > <
> Help appreciated!
There's a bug in this line:
the string find() method returns an integer, which will be -1 if the
substring is not found. In python -1 is treated as True (only 0 is
False) so your if statement will always succeed unless '1' is the
first character on the line.
P.S. you can use the help() command in the python interpreter to get
docs on most things:
Help on method_descriptor:
S.find(sub [,start [,end]]) -> int
Return the lowest index in S where substring sub is found,
such that sub is contained within s[start:end]. Optional
arguments start and end are interpreted as in slice notation.
Return -1 on failure.
More information about the Python-list