有这个问题,当我尝试连接到API时,它一直向我发送错误的签名,我意识到这是因为当我从文件中读取时,python 3上有这些方括号。当我在程序中对API密钥和秘密进行硬编码时,它可以工作。
import requests
import base64
import hmac
import hashlib
from hashlib import sha384
from io import BytesIO
import time
import json
def connect():
f=open("Test-API.txt", "r")
if f.mode == 'r':
api_key =f.readline().splitlines()
print(repr(api_key))
api_secret =f.readline().splitlines()
print(repr(api_secret))
f.close()
api_key = 'Your API Key'
api_secret = 'Your API Secret'
print(repr(api_key))
print(repr(api_secret))
connect()
我意识到问题可能是因为方括号导致当我使用REPR时我看到方括号被打印。有没有办法删除它?
['你的API密钥'] ['你的API秘密'] '你的API密钥' '你的API秘密'
答案 0 :(得分:1)
您正在创建自己看到的“单个元素列表”,对readline()
的结果使用splitlines()。您可能要做的是在最后删除换行符。那就是rstrip(chars)
的用途。
splitline(..)
返回分割线列表(doh)。只是不要这样做:
def connect():
with open("Test-API.txt", "r") as f:
api_key = f.readline().rstrip('\n') # rstrip the newline
api_secret = f.readline().rstrip("\n") # no splitlines() here either
print(type(api_key), api_key, sep = "\n")
print(type(api_secret), api_secret, sep ="\n"
connect()
此外,对using ...
使用open(..)
方法 - 如果遇到错误则会更加健壮,并为您自动关闭文件句柄。