inplace text filter - without writing file
Sayth Renshaw
flebber.crue at gmail.com
Sun Oct 2 01:19:02 EDT 2016
On Sunday, 2 October 2016 12:14:43 UTC+11, MRAB wrote:
> On 2016-10-02 01:21, Sayth Renshaw wrote:
> > Hi
> >
> > I have a fileobject which was fine however now I want to delete a line from the file object before yielding.
> >
> > def return_files(file_list):
> > for filename in sorted(file_list):
>
> When joining paths together, it's better to use 'os.path.join'.
>
> > with open(dir_path + filename) as fd:
> > for fileItem in fd:
> > yield fileItem
> >
> > Ned gave an answer over here http://stackoverflow.com/a/6985814/461887
> >
> > for i, line in enumerate(input_file):
> > if i == 0 or not line.startswith('#'):
> > output.write(line)
> >
> > which I would change because it is the first line and I want to rid <!--
> >
> > for i, line in enumerate(input_file):
> > if line.startswith(<!--'):
> > output.write(line)
> >
> > However I do not want to write the file I want to restore all the enumerated files back to the fileItem I need to yield.
> >
> > How do I do this?
> >
> You use the logic of the answer from StackOverflow in your
> 'return_files' function:
>
> def return_files(file_list):
> for filename in sorted(file_list):
> with open(dir_path + filename) as fd:
> for fileItem in fd:
> if keep_item(fileItem):
> yield fileItem
>
>
> If you need to know the line number when deciding whether to keep a
> line, use enumerate too:
>
> def return_files(file_list):
> for filename in sorted(file_list):
> with open(dir_path + filename) as fd:
> for i, fileItem in enumerate(fd):
> if keep_item(fileItem, i):
> yield fileItem
I just can't quite get it.
def return_files(file_list):
for filename in sorted(file_list):
file = os.path.join(dir_path, filename)
print(file)
with open(file) as fd:
print(fd)
for fileItem in fd:
print(fileItem)
for line in fileItem:
print(line[0])
if line.startswith('<!--'):
print(line[1:])
yield line[1:]
else:
yield line[:]
I maybe over baking it but just not getting it right.
Sayth
More information about the Python-list
mailing list