python Как запустить функцию, используя данные из файла csv

#python #function #loops #csv

#python #функция #циклы #csv

Вопрос:

У меня есть код, который выполняет задачу на pinterest, и он работает вручную, в области «pin_id =» необходимо заполнить число, и когда я запущу, повторное заполнение будет выполнено, однако я хочу :

  1. заполните данные в области «pin_id» из файла csv с одним столбцом.
  2. имейте некоторую задержку между каждой задачей (5-10 секунд).
  3. иметь возможность ограничить количество строк, выполняемых при каждом запуске, например, 50, файл CSV может содержать сотни данных, я не хочу запускать все данные за один раз.

[отредактированный] отредактированный код, последний, который я пробовал, вот код:

  import json
 import random
 import time
 import os
 from csv import reader
 import csv
 import pandas as pd
 from py3pin.Pinterest import Pinterest

 pinterest = Pinterest(email='xxxx',
                  password='xxxx',
                  username='xxxx',
                  cred_root='cred_root')
  def repin(pin_id='', board_id=myboard Id, section_id=None):
  return pinterest.repin(board_id=board_id, pin_id=pin_id, 
  section_id=section_id)

  with open('pin-test.csv','r') as csvfile:  # use with to auto-close file
  for row in csvfile.readlines():  # pin_id
   repin(row)  # board_id and section can use defaults
   time.sleep(random.randint(1,3)) # wait 1-3 seconds
  

пока нет функции для ограничения количества строк, которые будут выполняться,

во всяком случае, отредактированный скрипт тоже не работает,

Я получаю их при запуске:

 C:UsersDav111DesktopPythonpy3-pinterest-master>z-repin-test.py
Traceback (most recent call last):

File "C:UsersDav111DesktopPythonpy3-pinterest-masterz-repin-test.py", 
line 40, in <module>
repin(row)  # board_id and section can use defaults

File "C:UsersDav111DesktopPythonpy3-pinterest-masterz-repin-test.py", 
line 35, in repin
return pinterest.repin(board_id=board_id, pin_id=pin_id, 
section_id=section_id)

File "C:UsersDav111DesktopPythonpy3-pinterest- 
masterpy3pinPinterest.py", line 433, in repin
return self.post(url=REPIN_RESOURCE_CREATE, data=data)

File "C:UsersDav111DesktopPythonpy3-pinterest- 
masterpy3pinPinterest.py", 
line 111, in post
return self.request('POST', url=url, data=data, files=files, 
extra_headers=headers)

File "C:UsersDav111DesktopPythonpy3-pinterest- 
masterpy3pinPinterest.py", line 103, in request
response.raise_for_status()

File "C:pythonPython38libsite-packagesrequestsmodels.py", line 941, in 
raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: 
https://www.pinterest.com/resource/RepinResource/create/

 
  

ценю вашу помощь в этом.

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

1. Я не понимаю. Возможно, примеры данных и ожидаемый результат прояснят ситуацию. Я проверю сегодня вечером.

2. спасибо за ответ, я поставил pin-код перед «pin_id =», а номер платы перед «board_id =», при запуске он отобразится на моей плате, но я хочу заполнить pin_id = номером из файла CSV (одна строка), номером платыявляется постоянным, и мне не нужно его изменять, поэтому в файле CSV есть только один столбец, в каждой строке один номер 106327241191390329, 10766486599666429, 10836855341311643, прочитайте код файла CSV, это просто пример, который я нашел в Интернете, и я попытался заставить его работать с имеющимся у меня кодом.

3. Как вы получаете http-ошибки при чтении файла csv? 🙂

Ответ №1:

Это кажется простым. Просто вызовите функцию во время итерации файла данных.

 import random, time

def repin(pin_id='Id number from csv file', board_id=12345, section_id=None):
   return pinterest.repin(board_id=board_id, pin_id=pin_id, section_id=section_id)
   

with open('pin-test.csv','r') as csvfile:  # use with to auto-close file
   for row in csvfile.readlines():  # pin_id
       repin(row)  # board_id and section can use defaults
       time.sleep(random.randint(1,3)) # wait 1-3 seconds
  

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

1. спасибо за ответ, он содержит пару ошибок, я думаю, что в области «pin_id =» должно быть какое-то значение, я оставил его пустым, но он выдает ошибку, также, если он повторяется, он повторяет все содержимое сразу, я не хочу делать это сразуЯ хочу повторять их по одному за раз с некоторой случайной задержкой между ними.

2. Спасибо за отредактированные коды, это основано на проекте Github (github.com/bstoilov/py3-pinterest ) Я получаю следующие ошибки: Трассировка (последний последний вызов): File «C:UsersDav111DesktopPythonpy3-pinterest-masterz-repin-test.py «, строка 39, в <module> repin(строка) # board_id и раздел могут использовать файл по умолчанию «C:UsersDav111DesktopPythonpy3-pinterest-masterz-repin-test.py «, строка 34, в repin возвращает pinterest.repin(board_id=board_id, pin_id=pin_id, section_id=section_id)

3. Файл «C:UsersDav111DesktopPythonpy3-pinterest-masterpy3pinPinterest.py «, строка 433, в repin возвращает файл self.post(url=REPIN_RESOURCE_CREATE, data=data) «C:UsersDav111DesktopPythonpy3-pinterest-masterpy3pinPinterest.py «, строка 111, в post возвращает self.request(‘POST’, url=url, data=data, files=files, extra_headers=headers) Файл «C:UsersDav111DesktopPythonpy3-pinterest-masterpy3pinPinterest.py «, строка 103, в файле ответа на запрос.raise_for_status() «C:pythonPython38libsite-packagesrequestsmodels.py «, строка 941, в raise_for_status

4. Обновите свой пост своим последним кодом (или фрагментом) и добавьте полную трассировку стека ошибок.

5. Я обновил скрипт вашим скриптом, и все равно не работает, я пытался сделать все это внутри одной функции, но я не мог понять, как,