python 3.X显示了当我在程序中对字符串进行硬编码时的不同输入

时间:2018-05-26 11:40:26

标签: python python-3.x

有这个问题,当我尝试连接到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秘密'

1 个答案:

答案 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(..)方法 - 如果遇到错误则会更加健壮,并为您自动关闭文件句柄。