Hi Leo, On Monday 19 October 2015 05:24:44 [email protected] wrote: > From: Leonardo Sandoval <[email protected]> > > Before trying to append/read a file, check if file exists. > > Signed-off-by: Leonardo Sandoval > <[email protected]> --- > meta/lib/oeqa/utils/ftools.py | 24 ++++++++++++++---------- > 1 file changed, 14 insertions(+), 10 deletions(-) > > diff --git a/meta/lib/oeqa/utils/ftools.py b/meta/lib/oeqa/utils/ftools.py > index 64ebe3d..70a55b8 100644 > --- a/meta/lib/oeqa/utils/ftools.py > +++ b/meta/lib/oeqa/utils/ftools.py > @@ -8,20 +8,24 @@ def write_file(path, data): > > def append_file(path, data): > wdata = data.rstrip() + "\n" > - with open(path, "a") as f: > + if os.path.isfile(path): > + with open(path, "a") as f: > f.write(wdata)
Hang on - opening a nonexistent file with mode 'a' is perfectly fine, it'll just get created - why do we need this check? > def read_file(path): > data = None > - with open(path) as f: > - data = f.read() > + if os.path.isfile(path): > + with open(path) as f: > + data = f.read() > return data > > def remove_from_file(path, data): > - lines = read_file(path).splitlines() > - rmdata = data.strip().splitlines() > - for l in rmdata: > - for c in range(0, lines.count(l)): > - i = lines.index(l) > - del(lines[i]) > - write_file(path, "\n".join(lines)) > + rawdata = read_file(path) > + if rawdata: > + lines = rawdata.splitlines() > + rmdata = data.strip().splitlines() > + for l in rmdata: > + for c in range(0, lines.count(l)): > + i = lines.index(l) > + del(lines[i]) > + write_file(path, "\n".join(lines)) Checking a file exists before opening it isn't good practice. It's much better to try opening it and if the open fails with IOError of errno.ENOENT then ignore it (or rather, if e.errno != errno.ENOENT then re-raise the exception). Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
