##// END OF EJS Templates
* IPython/iplib.py (runsource): remove self.code_to_run_src attribute. I...
* IPython/iplib.py (runsource): remove self.code_to_run_src attribute. I realized this is nothing more than '\n'.join(self.buffer), and having the same data in two different places is just asking for synchronization bugs. This may impact people who have custom exception handlers, so I need to warn ipython-dev about it (F. Mantegazza may use them). * Fix http://www.scipy.net/roundup/ipython/issue38

File last commit:

r0:6f629fcc
r10:ec9735d7
Show More
magic_grepl.py
60 lines | 1.8 KiB | text/x-python | PythonLexer
"""This function implements a simple grep-like function in pure python.
You can enable it by copying it to your ~/.ipython directory and putting
execfile = magic_grepl.py
in your ipythonrc file.
Code contributed by Gever Tulley <gever@helium.com>, minor changes applied.
"""
import glob
import re
import os
def magic_grepl(self, parameter_s=''):
"""Search for a pattern in a list of files.
It prints the names of the files containing the pattern. Similar to 'grep
-l' in Unix-like environments.
Usage: @grepl pattern [files]
- pattern: any regular expression pattern which re.compile() will accept.
- files: list of files to scan. It can contain standard unix wildcards.
"""
# argument processing
params = parameter_s.split()
if len(params) > 1:
target = params[0] # first one is the target
file_patterns = params[1:] # all the rest are filenames or patterns
# build the regular expression
expr = re.compile(target)
for pattern in file_patterns:
flist = [f for f in glob.glob(pattern) if os.path.isfile(f)]
for filename in flist:
# open and read the whole file
f = open(filename,'r')
data = f.read()
f.close()
# see if pattern occurs in the file
if expr.search(data):
print filename
else:
# no parameters given
print("Usage: @grepl pattern [files]");
# Add the new magic function to the class dict:
from IPython.iplib import InteractiveShell
InteractiveShell.magic_grepl = magic_grepl
# And remove the global name to keep global namespace clean. Don't worry, the
# copy bound to IPython stays, we're just removing the global name.
del magic_grepl
#********************** End of file <magic_grepl.py> ***********************