0

hi there is specific use case In which I have to do streaming and I can't load file in memory so I have to read file line by line like this using iter_lines()

response = s3.get_object(
    Bucket=BUCKET_NAME, Key=file)

for index, line in enumerate(response['Body'].iter_lines()):
    line_data = line.decode('utf-8')

now this code work fine for csv and after decoding I can using that line but now having issue with excel file data of line of excel is something like this

b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00>\x00\x03\x00\xfe\xff\t\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\xb2\x05\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\xfe\xff\xff\xff\x00\x00\x00\x00\xa6\x05\x00\x00\xa7\x05\x00\x00\xa8\x05\x00\x00\xa9\x05\x00\x00\xaa\x05\x00\x00\xab\x05\x00\x00\xac\x05\x00\x00\xad\x05\x00\x00\xae\x05\x00\x00\xaf\x05\x00\x00\xb0\x05\x00\x00\xb1\x05\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\x08\x10\x00\x00\x06\x05\x00g2\xcd\x07\xc1\x80\x01\x00\x06\x06\x00\x00\xe1\x00\x02\x00\xb0\x04\xc1\x00\x02\x00\x00\x00\xe2\x00\x00\x00\\\x00p\x00\x04\x00\x00DELL                                                                                                         B\x00\x02\x00\xb0\x04a\x01\x02\x00\x00\x00\xc0\x01\x00\x00=\x01\x02\x00\x01\x00\x9c\x00\x02\x00\x11\x00\x19\x00\x02\x00\x00\x00\x12\x00\x02\x00\x00\x00\x13\x00\x02\x00\x00\x00\xaf\x01\x02\x00\x00\x00\xbc\x01\x02\x00\x00\x00=\x00\x12\x00h\x01x\x00\x138I 8\x00\x00\x00\x00\x00\x01\x00X\x02@\x00\x02\x00\x00\x00\x8d\x00\x02\x00\x00\x00"\x00\x02\x00\x00\x00\x0e\x00\x02\x00\x01\x00\xb7\x01\x02\x00\x00\x00\xda\x00\x02\x00\x00\x001\x00\x1e\x00\xdc\x00\x00\x00\x08\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00\x08\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00\x08\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00\x08\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00\x08\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00h\x01\x01\x008\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00m\x00b\x00r\x00i\x00a\x001\x00\x1e\x00,\x01\x01\x008\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\x04\x01\x01\x008\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x01\x008\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00\x11\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00\x14\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00<\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00>\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x01\x00?\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x01\x004\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x004\x00\x90\x01\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x01\x00\t\x00\xbc\x02\x00\x00\x00\x02\x00\xc2\x07\x01C\x00a\x00l\x00i\x00b\x00r\x00i\x001\x00\x1e\x00\xdc\x00\x00\x00'

so is there any way to convert it to normal line ?

John Rotenstein
  • 241,921
  • 22
  • 380
  • 470
TNN
  • 391
  • 1
  • 5
  • 12
  • Can you not store data in /tmp? – Captain Caveman Nov 09 '22 at 22:09
  • @CaptainCaveman no for now this is hurdle can't store and load in dataframe . – TNN Nov 09 '22 at 22:11
  • 2
    Excel files are a fairly complex format, either the classic OLE object or the modern ZIP/XML one). You can not read them line by line, you need to parse the format, and seek within it, which generally requires having the entire data available, either on disk or in memory. – Anon Coward Nov 09 '22 at 22:39
  • @AnonCoward for example my file is of 400MB and I just want to read 100 first records still I need to load whole file unlike csv in which I can read line by line ? – TNN Nov 09 '22 at 22:43
  • You don't need to load the entire file, but it does need to be present (short of deep knowledge of the file format) so it can be quickly searched as the reading library parses it. There are formats like csv that can be parsed in smaller chunks without seeking. XLS/XLSX is not one of those formats. – Anon Coward Nov 09 '22 at 22:49
  • @AnonCoward what it means `You don't need to load the entire file` I mean is there any way to get like file in chunks ? if I am not getting it wrong ? – TNN Nov 09 '22 at 22:50
  • 1
    I mean you don't need to load the entire file in memory. It does need to be local, for instance like storing the data in `/tmp` that was suggested (or, to be fair, just in memory, 400mb isn't that big). – Anon Coward Nov 09 '22 at 22:51
  • Might help: [Python: How to read and load an excel file from AWS S3?](https://stackoverflow.com/q/53439566/174777) – John Rotenstein Nov 09 '22 at 23:13

0 Answers0