Oops, fix read_filebytes not stopping at the range_max properly.
This commit is contained in:
		
							parent
							
								
									4c65ccaf68
								
							
						
					
					
						commit
						d740e6d686
					
				
					 1 changed files with 8 additions and 3 deletions
				
			
		|  | @ -296,24 +296,29 @@ def random_hex(length=12): | ||||||
|     token = token[:length] |     token = token[:length] | ||||||
|     return token |     return token | ||||||
| 
 | 
 | ||||||
| def read_filebytes(filepath, range_min=0, range_max=None, chunk_size=2 ** 20): | def read_filebytes(filepath, range_min=0, range_max=None, chunk_size=bytestring.MIBIBYTE): | ||||||
|     ''' |     ''' | ||||||
|     Yield chunks of bytes from the file between the endpoints. |     Yield chunks of bytes from the file between the endpoints. | ||||||
|     ''' |     ''' | ||||||
|     filepath = pathclass.Path(filepath) |     filepath = pathclass.Path(filepath) | ||||||
|     if range_max is None: |     if range_max is None: | ||||||
|         range_max = filepath.size |         range_max = filepath.size | ||||||
|     range_span = range_max - range_min |     range_span = (range_max + 1) - range_min | ||||||
| 
 | 
 | ||||||
|     f = open(filepath.absolute_path, 'rb') |     f = open(filepath.absolute_path, 'rb') | ||||||
|     f.seek(range_min) |  | ||||||
|     sent_amount = 0 |     sent_amount = 0 | ||||||
|     with f: |     with f: | ||||||
|  |         f.seek(range_min) | ||||||
|         while sent_amount < range_span: |         while sent_amount < range_span: | ||||||
|             chunk = f.read(chunk_size) |             chunk = f.read(chunk_size) | ||||||
|             if len(chunk) == 0: |             if len(chunk) == 0: | ||||||
|                 break |                 break | ||||||
| 
 | 
 | ||||||
|  |             needed = range_span - sent_amount | ||||||
|  |             if len(chunk) >= needed: | ||||||
|  |                 yield chunk[:needed] | ||||||
|  |                 break | ||||||
|  | 
 | ||||||
|             yield chunk |             yield chunk | ||||||
|             sent_amount += len(chunk) |             sent_amount += len(chunk) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue