Seite 1 von 1

String in Code aus Textfile ersetzen Schleife

Verfasst: Freitag 8. Oktober 2021, 15:23
von LeoWW
Servus liebe Python-Community,
Ich bin neu hier und habe eine Frage für mein Projekt.
Ich habe einen request.post code und möchte mehrere strings in der data, die gepostet werden soll, nach jedem loop replacen.
Python soll dazu nach jedem loop aus einer text datei die strings ersetzen. Wie setze ich das am besten um?
Hier der bisherige code:

Code: Alles auswählen

import requests
from requests.structures import CaseInsensitiveDict

url = "https://api.nft-maker.io/UploadNft/api/projectid"

headers = CaseInsensitiveDict()
headers["accept"] = "text/plain"
headers["Content-Type"] = "application/json"

data = """
{
  "assetName": "string",
  "previewImageNft": {
    "mimetype": "image/png", 
    "fileFromIPFS": "string",
    "description": "string"
   }
  }
"""


resp = requests.post(url, headers=headers, data=data)

print(resp.status_code)
 


Es sollen nach jedem loop die strings description, fileFromIPFS und assetName ersetzt werden.

Falls solche Fragen hier keinen Platz finden, dann bitte ich um Entschuldigung.
Ich bin dankbar für jede Hilfe.
MFG Leonard :)

Re: String in Code aus Textfile ersetzen Schleife

Verfasst: Freitag 8. Oktober 2021, 15:34
von __deets__
data sollte als Datenstruktur statt string definiert werden. Dann kannst du trivial die Werte veraendern, und wieder ein Request machen.

Code: Alles auswählen

def post_nft(name, file_from_ipfs, description):
    data = {
         "assetName" : name,
         "previewImageNft": {
              "fileFromIPFS": file_from_ipfs,
              ....
          }
      }
    resp = requests.post(url, headers=headers, data=data)


for i in range(10):
    post_nft(f"name{i}", f"filename{i}", f"description{i}")
Das ist nur skizziert. Aber man muss eben bei requests.post kein String als data uebergeben, sonder kann gleich eine JSON-kompatible Datenstruktur angeben, die auch entsprechend einfach gebaut wird.

Re: String in Code aus Textfile ersetzen Schleife

Verfasst: Freitag 8. Oktober 2021, 18:43
von LeoWW
Okay, das klingt einleuchtend und hilft auf jeden Fall schon mal weiter, jedoch ist doch jetzt die data in der request.post nicht mehr definiert, oder? Zumindest wird mir das so ausgegeben. Ich möchte den ganzen code immer wieder im loop durchlaufen lassen, also als script. Ich muss die Parameter jedoch 4000 mal ändern und das ist händisch nicht so toll. Ich habe die ganzen Parameter untereinander in einer Textfile.
Derzeit sieht das so aus

Code: Alles auswählen

 with open ("name.txt", "r") as file:
    line = file.readlines()
    for assetName in line: 
Ich möchte jetzt aber, dass nach jedem loop die nächste Line aus der Text File genommen wird. Also am Ende 4000 mal ein anderer Parameter genutzt wurde.
Was fehlt da also noch, dass erst nachdem das script einmal durchläuft der Parameter geändert wird, sprich eine line weiter runtergerutscht wird?
MFG Leo :)

Re: String in Code aus Textfile ersetzen Schleife

Verfasst: Samstag 9. Oktober 2021, 09:42
von Sirius3
Wenn Du eine Fehlermeldung bekommst, musst Du uns schon den Code zeigen und auch die exakte Meldung, die Du bekommst.
Statt CaseInsensitiveDict benutze ein normales Wörterbuch für header. Die beiden Angaben werden aber auch automatisch genommen, müssen also gar nicht explizit angegeben werden.