#python #function #loops #csv
#python #функция #циклы #csv
Вопрос:
У меня есть код, который выполняет задачу на pinterest, и он работает вручную, в области «pin_id =» необходимо заполнить число, и когда я запущу, повторное заполнение будет выполнено, однако я хочу :
- заполните данные в области «pin_id» из файла csv с одним столбцом.
- имейте некоторую задержку между каждой задачей (5-10 секунд).
- иметь возможность ограничить количество строк, выполняемых при каждом запуске, например, 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. Я обновил скрипт вашим скриптом, и все равно не работает, я пытался сделать все это внутри одной функции, но я не мог понять, как,