come scrivere in un file usando (o cambiando) la stampa usando Python 3.x

im utilizzando un’API di Interactive Brokers per ottenere dati storici e sto usando il loro codice per scaricare i dati.

il codice utilizza la funzione print per inviare i dati al terminale, ma vorrei redirigerli ad un file (chiamiamolo StockData.txt)

il codice che sto usando è:

from ibapi.client import EClient
from ibapi.wrapper import EWrapper
from ibapi.contract import Contract

class TestApp(EWrapper, EClient):
    def __init__(self):
        EClient.__init__(self, self)

    def error(self, reqId, errorCode, errorString):
        print("error: ", reqId, " ", errorCode, " ", errorString)

    def historicalData(self, reqId, bar):
        print("HistoricalData. ", reqId, " Date:", bar.date, "Open:", bar.open, "High:", bar.high, "Low:", bar.low, "Close:", bar.close, "Volume:", bar.volume)

def main():
    app = TestApp()

    app.connect("127.0.0.1", 7497, 0)

    contract = Contract ()
    contract.symbol = "AAPL"
    contract.secType = "STK"
    contract.exchange = "SMART"
    contract.currency = "USD"
    contract.primaryExchange = "NASDAQ"

    app.reqHistoricalData(0, contract, "", "1 D", "1 min", "TRADES", 0, 1, False, [])

    app.run()

if __name__ == "__main__":
    main()

come ho detto, Vorrei che l’API per scrivere a StockData.txt, ma non sono sicuro di come fare questo dal momento che non è il mio codice e non sono così esperto in Python.

qualcuno potrebbe aiutarmi qui? grazie!!

EN From: How to write to a file by using (or changing) print using Python 3.x

More similar articles:

9 Comments

  1. forse più informazioni sul motivo per cui non sei in grado può aiutarci ad aiutare a risolvere il problema te. si può clrificare?

  2. il link che invii non parla di stampa o scrittura, ma reindirizza qualcosa con una riga di codice. non credo di poter usare quel codice

  3. mentre probabilmente sarebbe meglio fare il reindirizzamento di uscita:

    python my_script.py > outputfile.txt

    per sovrascrivere effettivamente qualsiasi funzione è abbastanza semplice:

    def print_to_file(*args):
        with open('text.txt', 'a') as fh:
            fh.write(' '.join(map(str,args)))
    print = print_to_file

    basta inserire le righe di codice di cui sopra da qualche parte in alto in voi script questo non è il modo raccomandato però, perché sarà solo sovrascrivere print nello script corrente e non nei moduli importati che possono anche essere la stampa

    un modo migliore è quello di cambiare il stdout:

    import sys
    sys.stdout = open('text.txt', 'a')
    1. la prima opzione (sovrascrittura stampa) funziona solo per la stampa effettuata nello script corrente: se uno qualsiasi dei moduli importati scrive al terminale, quella parte non verrà scritta su file. il modo corretto (a parte la redirezione) è quello di cambiare stdout

Leave a Reply

Your email address will not be published. Required fields are marked *