如何使用 Python 3.x 使用(或更改)打印写入文件
How to write to a file by using (or changing) print using Python 3.x
我正在使用 Interactive Brokers 的 API 来获取历史数据,我正在使用他们的代码来下载数据。
代码使用 print 函数将数据输出到终端,但我想将其重定向到一个文件(我们称该文件为 StockData.txt)
我使用的代码是:
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()
就像我说的,我希望 API 写信给 StockData.txt,但我不确定该怎么做,因为这不是我的代码,而且我对 [=25 也不是那么精通=].
有人能帮我吗?
谢谢!
虽然输出重定向可能会更好:
python my_script.py > outputfile.txt
实际覆盖任何函数非常简单:
def print_to_file(*args):
with open('text.txt', 'a') as fh:
fh.write(' '.join(map(str,args)))
print = print_to_file
只需将上面的代码行放在脚本的某个高位
不过,这 不是 推荐的方式,因为它只会覆盖当前脚本中的 print
而不会覆盖也可能正在打印的导入模块中
更好的方法是更改 stdout
:
import sys
sys.stdout = open('text.txt', 'a')
我正在使用 Interactive Brokers 的 API 来获取历史数据,我正在使用他们的代码来下载数据。
代码使用 print 函数将数据输出到终端,但我想将其重定向到一个文件(我们称该文件为 StockData.txt)
我使用的代码是:
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()
就像我说的,我希望 API 写信给 StockData.txt,但我不确定该怎么做,因为这不是我的代码,而且我对 [=25 也不是那么精通=].
有人能帮我吗? 谢谢!
虽然输出重定向可能会更好:
python my_script.py > outputfile.txt
实际覆盖任何函数非常简单:
def print_to_file(*args):
with open('text.txt', 'a') as fh:
fh.write(' '.join(map(str,args)))
print = print_to_file
只需将上面的代码行放在脚本的某个高位
不过,这 不是 推荐的方式,因为它只会覆盖当前脚本中的 print
而不会覆盖也可能正在打印的导入模块中
更好的方法是更改 stdout
:
import sys
sys.stdout = open('text.txt', 'a')