Changing strings in files

Manfred Lotz ml_news at posteo.de
Tue Nov 10 03:57:37 EST 2020


On Tue, 10 Nov 2020 08:19:55 +0100
"Loris Bennett" <loris.bennett at fu-berlin.de> wrote:

> Manfred Lotz <ml_news at posteo.de> writes:
> 
> > I have a situation where in a directory tree I want to change a
> > certain string in all files where that string occurs.
> >
> > My idea was to do
> >
> > - os.scandir and for each file
> >    - check if a file is a text file
> >    - if it is not a text file skip that file
> >    - change the string as often as it occurs in that file
> >
> >
> > What is the best way to check if a file is a text file? In a script
> > I could use the `file` command which is not ideal as I have to grep
> > the result. In Perl I could do  -T file.
> >
> > How to do best in Python?  
> 
> If you are on Linux and more interested in the result than the
> programming exercise, I would suggest the following non-Python
> solution:
> 
>    find . -type -f -exec sed -i 's/foo/bar/g' {} \;
> 

My existing script in Perl which I wanted to migrate to Python I used 
 `-T $file` and called sed

I like the -T which I assume does some heuristics to tell me if a file
is a text file. 

-- 
Manfred





More information about the Python-list mailing list