如何在 Python 中使用 .env 文件
我们以前都去过那里,将登录凭据或 API 令牌推送到 GitHub。这可能会导致许多问题,例如让您的帐户链接到您正在使用的 API 被暂停。这一切都是因为机器人在 GitHub 上找到了你的 API 令牌。也许有人找到了您的在线托管数据库的连接字符串并删除了您的所有数据。 使用两个文件可以轻松防止这些情况: .env 文件 .gitignore 文件 在这篇博文中,我们将介绍如何设置这两个文件以及
我们以前都去过那里,将登录凭据或 API 令牌推送到 GitHub。这可能会导致许多问题,例如让您的帐户链接到您正在使用的 API 被暂停。这一切都是因为机器人在 GitHub 上找到了你的 API 令牌。也许有人找到了您的在线托管数据库的连接字符串并删除了您的所有数据。
使用两个文件可以轻松防止这些情况:
-
.env 文件
-
.gitignore 文件
在这篇博文中,我们将介绍如何设置这两个文件以及如何在 Python 3 项目中使用它们。我们走吧!
前置要求
了解几件事有助于更好地理解这篇博文:
-
如何建立一个Python项目
-
基本 Python 语法的工作原理
-
如何使用pip
-
如何使用git(git init、git status)
例如 2 它还有助于了解公共 API 如何与 Python 一起工作。
这些文件是什么
我们需要知道这些文件是什么并首先做。你永远不想用你不理解的东西编码。
什么是 .env 文件
环境变量文件是一个文本文件,您可以通过在项目文件夹中将其命名为“.env”来使用它。这是一种保存您想要使用但又不想在互联网上出现的全局变量的简单方法。这些例子是:
-
数据库凭据
-
登录凭据
-
API 令牌
-
私钥
-
加密钱包密钥
什么是.gitignore文件
这个名字已经说明了一切。 .gitignore 文件是一个文本文件,它告诉 git 忽略提交的文件。你不想提交你的 .env 文件,因为你所有的秘密凭证都在那里。这就是为什么你想要一个 .gitignore 文件来排除它。
实用编码示例
这篇博文中有两个实际示例,您可以阅读或重新创建。第一个非常简单,我们将您喜欢的语言隐藏在 .env 文件中。第二个示例包括使用 API 密钥。它有助于理解 API 和字典的工作原理,但这不是必须的。
开始之前
如果我们想使用 .env 文件,我们需要先安装一件事。我们需要带有 pip 的'python-dotenv'包才能使 .env 文件实际工作。
要安装 python-dotenv,请在终端中使用以下命令:
pip install python-dotenv
在尝试使用该包之前,不要忘记重新构建或重新打开您的 Python 项目。
示例一:这是我最喜欢的语言
在此示例中,我们要打印您喜欢的语言。关于什么是最好的语言的讨论在互联网上可能会引起争议。这就是为什么我们要对 GitHub 保密。 Python 是我最喜欢的语言,所以我将使用它。
首先,我们需要项目文件夹中的两个文件:
-
main.py(你也可以给它起另一个名字,只要它是一个Python文件)
-
.env
好的,现在是有趣的部分!我们要编码。
1\。添加变量
要创建一个包含字符串“Python”的变量,我们可以将以下内容添加到 .env 文件中:
LANGUAGE = Python
.env 文件中的变量名应始终为大写。
2\。使用 Python 文件中的变量
在 Python 文件中使用这个变量比你想象的要容易!
首先,我们需要一些包来让 Python 与 .env 文件一起工作。它们是:dotenv 和 os。
我们像这样导入它们:
from dotenv.main import load_dotenv
import os
接下来,您需要告诉 python-dotenv 加载我们的变量和 os 以搜索变量。我们可以通过添加这两行来做到这一点:
load_dotenv()
favorite_language = os.environ['LANGUAGE']
3\。看结果
而已!现在我们可以使用打印语句告诉世界您最喜欢的语言是什么
让人们知道的打印功能:
print("My favorite programming language is: " + favorite_language)
# Prints My favorite programming language is: Python
这是我们在这个例子之后的 Python 文件中应该有的所有代码:
from dotenv.main import load_dotenv
import os
load_dotenv()
favorite_language = os.environ['LANGUAGE']
print("My favorite programming language is: " + favorite_language)
示例二:简单的 Superhero API
对于第二个示例,我们将在 .env 文件中添加另一个变量。这一次,我们将隐藏一个 API 密钥,因为这是您应该始终保密的东西。
本文不是关于 API 调用如何工作的。因此,我不会详细介绍代码的作用。如果您有兴趣学习如何在 Python 中使用 API,请查看这篇关于 Rapid API 的博文
我们都喜欢蝙蝠侠(对吧?),所以计划是创建一个小型终端应用程序,它显示:
-
他的名字(‘蝙蝠侠’)
-
他的真名(“布鲁斯·韦恩”)
此信息来自一个名为'Superhero API' 的公共 API。
1\。将变量添加到 .env 文件
我们需要将 API 密钥添加到 .env 文件中。我们这样做是为了以后可以对 git 保密。我们将此变量称为 API_KEY:
API_KEY=3928193820281931
此 API 密钥示例是假的。如果您想自己尝试,则必须在网站上生成自己的。
2\。将我们需要的导入添加到 Python 文件中
我们需要我们已经使用的导入以及一些用于 API 请求和 JSON 转换的新导入。这是我们在 Python 文件顶部的代码中需要的内容:
from dotenv.main import load_dotenv
from urllib.request import Request, urlopen
import os, json
load_dotenv()
3\。获取 API 数据并将其从 JSON 转换
下一步是我们将向 API 发送一个 GET 请求。之后,将我们收到的 JSON 数据转换为字典。稍后我们可以将该字典用于控制台应用程序。
这是我们将要使用的调用参考:
https://superheroapi.com/api/api-key/character-id/biography
为了让生活更轻松,我发现蝙蝠侠的 ID 是 70。
要请求 API 数据,获取数据并将其转换为字典,我们将以下代码添加到 Python 文件中:
api_key = os.environ['API_KEY']
url = "http://www.superheroapi.com/api.php/" + api_key +"/70/biography" # Url to API
api_request = Request(url, headers={'User-Agent': 'Mozilla/5.0'}) # The header needs to be added due to the APIs security
data = urlopen(api_request).read() # Calls the API request and reads the JSON data it receives.
data_to_dict= json.loads(data)
4\。从字典中获取数据
我们需要从字典中获取数据(超级英雄和真实姓名)到一个字符串变量。这可以通过使用 dictionary.get('a key value from the dictionary') 来实现。
name = data_to_dict.get('name')
real_name = data_to_dict.get('full-name')
5\。看看你的结果
我们终于得到它了!我们现在要做的就是将这些值打印到终端。
print("Superhero name: " + name + ", Real name: " + real_name)
# Result will be Superhero name: Batman, Real name: Bruce Wayne
一旦我们完成了所有这些,Python 文件将如下所示:
from dotenv.main import load_dotenv
import os, json
from urllib.request import Request, urlopen
load_dotenv()
api_key = os.environ['API_KEY']
url = "http://www.superheroapi.com/api.php/" + api_key +"/70/biography"
api_request = Request(url, headers={'User-Agent': 'Mozilla/5.0'})
data = urlopen(api_request).read()
data_to_dict= json.loads(data)
name = data_to_dict.get('name')
real_name = data_to_dict.get('full-name')
print("Superhero name: " + name + ", Real name: " + real_name)
添加.gitignore文件
我们需要做的第一件事是建立一个本地存储库。我们可以通过在您的项目文件夹中打开终端并运行git init
来做到这一点。如果你之前没用过git,或者git命令不识别,你可能需要先安装。
接下来,我们在终端中运行git status
。使用此命令,git 将向您显示它可以为您提交的文件。
我们不想提交 .env 文件。这将导致我们的秘密变量公开。这就是为什么我们要创建一个 .gitignore 文件。
设置.gitignore文件最简单快捷的方法是在第一行写下.env
并保存。
我更喜欢去gitignore.io并搜索“Python”。它将为您提供一个包含纯文本的页面,其中包含 Python 常见的各种文件和文件夹(包括 .env)可以忽略。将原始文本复制并粘贴到您在项目文件夹中创建的 .gitignore 文件中。
如果我们搜索“Python”,我们从gitignore.io得到的文本如下所示:image.png
如果我们复制文本,它会在文本编辑器中看起来像这样:
现在你已经有了一个工作的 .gitignore 文件。不要忘记保存它!
整理完毕
就这样!现在剩下要做的就是提交并将您的代码推送到您的 GitHub 存储库。如果你运行git status
你可以告诉 Git 不能再提交 .env 文件了。它不在名单上。
结局
非常感谢您的阅读。我希望这篇博文对你有所帮助。如有任何问题或评论,请不要害怕在 Twitter 或 Instagram 上联系。你也可以对这篇文章发表评论。回头见!
更多推荐
所有评论(0)