python 3.x - Cleaning up the Garbage Output File -
i pretty new python , tried read jpg file , write simple practice. file not huge, 142 kbytes when used buffer chunks of 50000 bytes read , write new.jpg file, gave limited space error , ate of remaining 4gb of space in c:\ drive on desktop , never released memory. how can see , free memory used python. here code:
def main(): buffersize = 50000 infile = open('olives.jpg', 'rb') outfile = open('new.jpg', 'wb') buffer = infile.read(buffersize) while(len(buffer)): outfile.write(buffer) print('.', end = '') infile.read(buffersize) print() print('done') if __name__ == "__main__": main() please let me know how can free memory c:\ drive short in memory.
thank you!
in loop, never change buffer. need assign read result, or keep writing same original buffer contents on , over, loop never ends. change final line of while loop:
while(len(buffer)): outfile.write(buffer) print('.', end = '') infile.read(buffersize) # <-- not assigning result to:
buffer = infile.read(buffersize) also, style points, change while(len(buffer)): while buffer:; bytes objects (like sequences) truthy when non-zero length, , falsy when zero-length (and python doesn't require parens conditional statements unless they're needed grouping tests).
as "freeing memory" (meaning "cleaning garbage output file"), delete it. @ command line, can visit working directory ran script in , run del new.jpg, or navigate there same way in file browser. if have no idea file is, rerunning script after fixing infinite loop problem truncate original file before writing (because mode included w), solve problem.
Comments
Post a Comment