Look for a string on a file and get its line number

Tim Chase python.list at tim.thechases.com
Tue Jan 8 08:15:57 EST 2008


>> I have to search for a string on a big file. Once this string 
>> is found, I would need to get the number of the line in which 
>> the string is located on the file. Do you know how if this is 
>> possible to do in python ?
> 
> This should be reasonable:
> 
>>>> for num, line in enumerate(open("/python25/readme.txt")):
> 	if "Guido" in line:
> 		print "Found Guido on line", num
> 		break
> 
> 	
> Found Guido on line 1296

Just a small caveat here:  enumerate() is zero-based, so you may
actually want add one to the resulting number:

  s = "Guido"
  for num, line in enumerate(open("file.txt")):
    if s in line:
      print "Found %s on line %i" % (s, num + 1)
      break # optionally stop looking

Or one could use a tool made for the job:

  grep -n Guido file.txt

or if you only want the first match:

  sed -n '/Guido/{=;p;q}' file.txt

-tkc






More information about the Python-list mailing list