Python, диапазон печати строки с задержками

#python #row #delay

#python #строка #задержка

Вопрос:

Я новичок в python, я пробовал множество функций чтения CSV для печати диапазона строк из одностолбцового CSV-файла (без заголовка) с некоторой задержкой при каждой печати, но безуспешно, я хочу поместить это в функцию, но пока я пытаюсь заставить печать работатьсначала я попробую с помощью функции, вот что я пробовал:

   from time import sleep
  from csv import reader
  import csv
  import pandas as pd

  df = pd.read_csv('test3.csv')
  print(df.iloc[25:36]) # it prints row 25 till row 36
  

Я попробовал это с помощью таймера:

   df = pd.read_csv('test3.csv')
  for s in (df.iloc[25:36]):
  print(s) ; sleep(5)
  

но он печатает только первую строку, спит в течение 5 секунд, но не печатает остальные.
Я благодарен за вашу помощь

Отредактировано:

ХОРОШО, новый таймер от Nikolaos работает отлично, вот простая функция, которую я хочу заставить ее работать вместе с данными из файла csv:

 def func1(some_id='', some_Num ='12345'):
return something.func1(some_id=some_id, some_Num = some_Num)
func1() # this works when run
  

Я хочу заполнить данные перед «some_id =» из CSV-файла, но не работает,

 def func1(some_id='', some_Num ='12345'):
return something.func1(some_id=some_id, some_Num = some_Num)

with open('test3.csv') as cso:
for s in islice(cso, 25, 37): # from 25 to 36 included, update as needed
    func1(s, end='')
    time.sleep(5)
  

Отредактировано:
в целях обучения я хочу изучить другой метод печати строк CSV-файла с задержкой между ними, поэтому я попробовал следующий код из Cyrex, но не работает, я использовал код Visual Studio для запуска python, а часть:

 for row in list(csv_reader)
  

ошибка отображается при закрытии pretense:
для строки в списке (csv_reader)
^
Ошибка синтаксиса: недопустимый синтаксис

код::

  import json
 import random
 import time
 import os
 from time import sleep
 from csv import reader
 from itertools import islice
 import csv
 import pandas as pd

 with open('test4.csv', 'r') as read_obj:
 csv_reader = reader(read_obj)
 header = next(csv_reader)
 if header != None:  
    list = [] 
    for row in list(csv_reader)
       list.append[row]
    print(list[24:35])
    time.sleep(5)
  

вот данные в файле CSV:

 432323422016048516
3245968643672398
994751490493134145
1245290296886842
2286337388046077
5576337391667210
670175046204272300
  

Ответ №1:

Если вы хотите напечатать все строки, а затем подождать 5 секунд, попробуйте:

 >>> from itertools import islice
>>> from csv import reader
>>> import time
>>>
>>> with open('test3.csv') as cso:
...     for s in islice(cso, 25, 37): # from 25 to 36 included, update as needed
...         print(s, end='')
...     time.sleep(5)
  

Если вы хотите напечатать строку, подождите 5 секунд и продолжите печать и ожидание, попробуйте:

 >>> from itertools import islice
>>> from csv import reader
>>> import time
>>>
>>> with open('test3.csv') as cso:
...     for s in islice(cso, 25, 37): # from 25 to 36 included, update as needed
...         print(s, end='')
...         time.sleep(5)
  

Комментарии:

1. спасибо, Николаос, за скрипт, он работает, отлично!, именно так я и хотел, однако я не хочу использовать print, вместо этого запустите функцию, я хочу использовать данные из CSV для вставки в функцию. Я попробовал это, поскольку он находится за пределами функции, мне трудно понять, как это сделать, я благодарен за любую помощь. Я обновлю свой первый пост с помощью функции example .

2. @Dave99 отлично, что это сработало для вас; теперь у вас есть другой вопрос, и это прекрасно; Я бы рекомендовал вместо того, чтобы загрязнять этот вопрос, задать новый и объяснить вашу новую проблему; таким образом, ответ на этот вопрос может быть полезен для других, и это было бы проще для большего количества людей(и я), чтобы помочь вам с новой проблемой, с которой вы сталкиваетесь

Ответ №2:

это должно быть что-то вроде

 from csv import reader
import time


with open('file.csv', 'r') as read_obj:
    csv_reader = reader(read_obj)
    header = next(csv_reader)

    # Check file if empty

    if header != None:
        
        lst = [] 

        for row in csv_reader:

            
            lst.append[row]

        print(lst[24:35]) # changed 25 to 24 and 36 to 35 coz this iteration is done through lst list not through csv_reader

        time.sleep(5) 
  

Комментарии:

1. спасибо за ответ, я пробовал аналогичный скрипт, который работает, если я печатаю все строки из файла CSV, но я хочу напечатать диапазон строк, в моем примере у меня было от строки 25 до 36.

2. мой плохой, не видел диапазон, собираюсь обновить код через несколько минут

3. спасибо за код, однако я получаю ошибку 1st.append[row] как: TypeError: объект ‘builtin_function_or_method’ не поддается подписке, я не понимаю часть добавления,

4. попробуйте для строки в списке (csv_reader) на самом деле это было успешно, когда я тестировал его в vs code с python 3.9

5. @Dave99 я увидел опечатку 1st , пока она первая