Не нужно зацикливаться: .values
вернет матрицу
url="https://www.test.com/csv.php"
dataset = requests.get(url, verify=False).content
df = pd.read_csv(io.StringIO(dataset.decode('utf-8')), header=None, sep=',')
data=df.values
Вы получаете ValueError, потому что ваш код, вероятно, имеет для строки в оригинале:
в дополнение к original.readline ()
. Простое решение, которое решает проблему, не делая вашу программу медленнее или потребляя больше памяти, меняет
for line in original:
...
на
while True:
line = original.readline()
if not line: break
...
Использовать для
и перечислять .
Пример:
for line_num, line in enumerate(file):
if line_num < cut_off:
print line
ПРИМЕЧАНИЕ : Предполагается, что вы уже очищаете свои файловые дескрипторы и т. Д.
Кроме того, функция takewhile может оказаться полезной, если вы предпочитаете более функциональный аромат.
Предполагая, что вам нужна только одна строка, это может помочь
import itertools
def getline(fobj, line_no):
"Return a (1-based) line from a file object"
return itertools.islice(fobj, line_no-1, line_no).next() # 1-based!
>>> print getline(open("/etc/passwd", "r"), 4)
'adm:x:3:4:adm:/var/adm:/bin/false\n'
Возможно, вы захотите отловить ошибки StopIteration (если в файле меньше строк).