货币转换工具开发指南
立即解锁
发布时间: 2025-08-14 00:53:41 阅读量: 2 订阅数: 4 


Python编程蓝图:构建九大项目实战
### 货币转换工具开发指南
#### 1. 项目概述
在当今全球化的经济环境中,货币转换是一个常见的需求。为了满足这一需求,我们将开发一个终端工具,该工具可以从 fixer.io 获取当前的汇率数据,并利用这些信息在不同货币之间进行价值转换。fixer.io 是一个优秀的项目,它每天从欧洲中央银行获取外汇汇率数据,其 API 使用简单且效果良好。
#### 2. 环境搭建
- **安装 pipenv**:pipenv 是一个强大的工具,它不仅可以管理项目依赖,还能创建和管理虚拟环境。安装 pipenv 非常简单,只需运行以下命令:
```bash
pip install pipenv
```
安装完成后,可以运行 `pipenv --help` 查看帮助信息。
- **创建项目目录**:使用以下命令创建一个名为 `currency_converter` 的项目目录,并进入该目录:
```bash
mkdir currency_converter && cd currency_converter
```
- **创建虚拟环境**:在项目目录中,使用 pipenv 创建虚拟环境。可以指定 Python 版本,例如使用 Python 3.6:
```bash
pipenv --python python3.6
```
也可以使用 `--three` 选项,使用系统默认的 Python 3 安装。创建完成后,查看 `Pipfile` 文件,内容如下:
```
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[dev-packages]
[packages]
[requires]
python_version = "3.6"
```
这个文件定义了包的来源、开发依赖和生产依赖,以及项目所需的 Python 版本。
- **激活虚拟环境**:可以使用以下命令激活虚拟环境:
```bash
pipenv shell
```
- **安装项目依赖**:安装 `requests` 和 `pymongo` 两个依赖:
```bash
pipenv install requests
pipenv install pymongo
```
安装完成后,查看 `Pipfile` 文件,会发现已经添加了这两个依赖:
```
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[dev-packages]
[packages]
requests = "*"
pymongo = "*"
[requires]
python_version = "3.6"
```
- **查看依赖关系**:使用 `pipenv graph` 命令可以查看已安装包的依赖关系:
```bash
pipenv graph
```
在我们的项目中,可以看到 `pymongo` 没有额外的依赖,而 `requests` 有四个依赖:`certifi`、`chardet`、`idna` 和 `urllib3`。
- **项目结构**:项目结构如下:
```
currency_converter
└── currency_converter
├── config
├── core
```
顶层的 `currency_converter` 是应用程序的根目录,下一级的 `currency_converter` 是我们要创建的模块。`core` 目录包含应用程序的核心功能,如命令行参数解析器、处理数据的辅助函数等;`config` 目录包含读取 YAML 配置文件的函数;`HTTP` 目录包含对 fixer.io REST API 进行 HTTP 请求的所有函数。
- **安装 MongoDB**:根据不同的操作系统,安装 MongoDB:
- **Linux Debian 9**:使用以下命令安装:
```bash
sudo apt install mongodb
```
- **macOS**:参考链接:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/
- **Windows**:参考链接:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/
安装完成后,使用 `mongo` 命令验证是否安装成功:
```bash
mongo
```
进入 MongoDB shell 后,输入 `CTRL + D` 退出。
#### 3. 创建 API 包装器
- **创建 `request.py` 文件**:在 `currency_converter/currency_converter/core` 目录下创建 `request.py` 文件,添加以下导入语句:
```python
import requests
from http import HTTPStatus
import json
```
- **实现 `fetch_exchange_rates_by_currency` 函数**:该函数用于根据特定货币返回当前汇率:
```python
def fetch_exchange_rates_by_currency(currency):
response = requests.get(f'https://api.fixer.io/latest?base={currency}')
if response.status_code == HTTPStatus.OK:
return json.loads(response.text)
elif response.status_code == HTTPStatus.NOT_FOUND:
raise ValueError(f'Could not find the exchange rates for: {currency}.')
elif response.status_code == HTTPStatus.BAD_REQUEST:
raise ValueError(f'Invalid base currency value: {currency}')
else:
raise Exception((f'Something went wrong and we were unable to fetch'
f' the exchange rates for: {currency}'))
```
- **导入函数**:在 `currency_converter/currency_converter/core` 目录下创建 `__init__.py` 文件,导入刚刚创建的函数:
```python
from .request import fetch_exchange_rates_by_currency
```
- **测试函数**:在 Python REPL 中测试该函数:
```python
from currency_converter.core import fetch_exchange_rates_by_currency
from pprint import pprint as pp
exchange_rates = fetch_exchange_rates_by_currency('BRL')
pp(exchange_rates)
```
输出结果如下:
```
{'base': 'BRL',
'date': '2017-12-06',
'rates': {'AUD': 0.40754,
'BGN': 0.51208,
'CAD': 0.39177,
'CHF': 0.30576,
'CNY': 2.0467,
'CZK': 6.7122,
'DKK': 1.9486,
'EUR': 0.26183,
'GBP': 0.23129,
'HKD': 2.4173,
'HRK': 1.9758,
'HUF': 82.332,
'IDR': 4191.1,
'ILS': 1.0871,
'INR': 19.963,
'JPY': 34.697,
'KRW': 338.15,
'MXN': 5.8134,
'MYR': 1.261,
'NOK': 2.5548,
'NZD': 0.4488,
'PHP': 15.681,
'PLN': 1.1034,
'RON': 1.2128,
'RUB': 18.273,
'SEK': 2.599,
'SGD': 0.41696,
'THB': 10.096,
'TRY': 1.191,
'USD': 0.3094,
'ZAR': 4.1853}}
```
#### 4. 添加数据库辅助类
- **创建 `db.py` 文件**:在 `currency_converter/currency_converter/core` 目录下创建 `db.py` 文件,添加以下导入语句:
```python
from pymongo import MongoClient
```
- **定义 `D
0
0
复制全文
相关推荐










