2014-09-16 4 views
0

Я работаю над выходным сигналом на питоне и получил CSV-файл (возможно, gzipped) . Если это gzipped, я должен распаковать его, а затем прочитать.Как проверить, является ли файл файлом .gz

Я пытался прочитать первые два байта сделать так:

def func(filename): 
    fi = open(filenam,"rb") 
    byte1 = fi.read(1) 
    byte2 = fi.read(1) 

тогда я проверю Байт 1 и byte2, чтобы увидеть, если они равны 0x1F и 0x8b, а затем распаковать его затем распечатать каждую строку Это.

, но когда я запускаю его, я получил это «TypeError: объект„“NoneType не Iterable»

Я новичок в Python, может кто-нибудь помочь?

+0

Это не похоже на то, что этот фрагмент вызывает его. Добавьте еще один код. – kipodi

+2

Создайте ** полную ** короткую программу, которая демонстрирует ошибку. Начните с вашей программы и удалите все, что не связано с сообщением об ошибке. Затем скопируйте (не повторяйте) эту программу в свой вопрос. См. Http://stackoverflow.com/help/mcve и http://SSCCE.org –

+0

, это все, что у меня есть в функции :( – user2756325

ответ

0

вам нужно использовать ENDWITH() в Python, чтобы проверить, есть ли папка .gz файл расширения затем использовать GZIP модуль для распаковки его и читать .gz содержание

import os 
import gzip 
for file in os.listdir(r"C:\Directory_name"): 
    if file.endswith(".gz"): 
     print file 
     os.chdir(r"C:\Directory_name") 
     f = gzip.open(file, 'rb') 
     file_content = f.read() 
     f.close() 

так вот «file_content» переменная будет держать данные вашего файла csv gzipped

+0

как мы читаем это по строкам? Как мы распаковываем при чтении? – user2756325

+0

, тогда вам нужно использовать readlines() вместо read() для файлового объекта, поэтому он будет хранить все содержимое csv по строкам в переменной списка – sohom

2

Понимание того, что вы сказали в комментарии - «это все, что у меня есть в функции». Я предполагаю, что проблема заключается в том, что функция не имеет возвращаемого значения. Поэтому, вероятно, вызывающая функция пытается запустить результат вызова функции без возвращаемого значения, т. Е. NoneType.

Смежные вопросы