提交 8d7df419 编写于 作者: W wizardforcel

2019-12-05 12:02:10

上级 a6c316ab
...@@ -27,7 +27,7 @@ JavaScript Object Notation(JSON)是一种数据交换格式。 虽然最初 ...@@ -27,7 +27,7 @@ JavaScript Object Notation(JSON)是一种数据交换格式。 虽然最初
``` ```
Then parse the JSON object like this: 之后像这样解析 JSON 对象:
```py ```py
import json import json
...@@ -38,8 +38,7 @@ print(obj['gold']) ...@@ -38,8 +38,7 @@ print(obj['gold'])
### 从 URL 解析 JSON ### 从 URL 解析 JSON
您可以直接从网络上获取 JSON 对象,并将其转换为 python 对象。 这是通过 API 端点 您可以直接从网络上获取 JSON 对象,并将其转换为 python 对象。 这是通过 API 端点完成的
完成的
```py ```py
import json import json
......
...@@ -4,12 +4,9 @@ ...@@ -4,12 +4,9 @@
在 python 中读取 json 文件非常容易。 在本文中,我们将说明如何从磁盘读取 JSON 文件并在 python 中使用它。 在 python 中读取 json 文件非常容易。 在本文中,我们将说明如何从磁盘读取 JSON 文件并在 python 中使用它。
_ 什么是 JSON?_ 什么是 JSON?JSON 是一种在整个 Internet 上使用的数据交换格式。 **JSON** (JavaScript 对象表示法)可用于所有高级编程语言。
[JSON](/json) 是一种在整个 Internet 上使用的数据交换格式。 **JSON** (JavaScript 对象表示法)可用于所有高级编程语言。
_ 如何在 python 中使用 JSON?_ 如何在 python 中使用 JSON?这种工作方式是首先在磁盘上放置一个 json 文件。然后,程序将加载文件进行解析,解析,然后即可使用它。
这种工作方式是首先在磁盘上放置一个 json 文件。
然后,程序将加载文件进行解析,解析,然后即可使用它。
...@@ -17,20 +14,20 @@ _ 如何在 python 中使用 JSON?_ ...@@ -17,20 +14,20 @@ _ 如何在 python 中使用 JSON?_
### JSON 文件 ### JSON 文件
在磁盘上创建一个文件(命名为:example.json)。 下面的 python 程序读取 json 文件并直接使用值。 在磁盘上创建一个文件(命名为:`example.json`)。 下面的 python 程序读取 json 文件并直接使用值。
该文件可以包含一个衬纸。 example.json 的文件内容为: 该文件可以包含一个衬纸。`example.json`的文件内容为:
```py ```py
{"usd":1,"eur":1.2,"gbp": 1.2} {"usd":1,"eur":1.2,"gbp": 1.2}
``` ```
Save the file to example.json. 将文件保存为`example.json`
### python 示例 ### python 示例
然后在下面创建程序并运行 然后在下面创建程序并运行:
```py ```py
import json import json
...@@ -49,4 +46,4 @@ print("gbp: " + str(obj['gbp'])) ...@@ -49,4 +46,4 @@ print("gbp: " + str(obj['gbp']))
``` ```
The above program will open the file ‘example.json’ and parse it. You can access the JSON data like any variables. 上面的程序将打开文件`example.json`并进行解析。 您可以像访问任何变量一样访问 JSON 数据。
\ No newline at end of file \ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
使用装饰器向现有功能添加功能。 这称为元编程。 使用装饰器向现有功能添加功能。 这称为元编程。
一个函数可以将一个函数作为参数(_ 要修饰的函数 _),并返回带或不带扩展名的相同函数。 一个函数可以将一个函数作为参数(要修饰的函数),并返回带或不带扩展名的相同函数。
扩展功能有时非常有用,我们将在本文稍后展示真实的示例。 扩展功能有时非常有用,我们将在本文稍后展示真实的示例。
...@@ -17,18 +17,18 @@ ...@@ -17,18 +17,18 @@
在 Python 中,一切都是对象,包括函数。 这意味着函数可以传递并返回。 当您看到它时,乍一看可能很奇怪: 在 Python 中,一切都是对象,包括函数。 这意味着函数可以传递并返回。 当您看到它时,乍一看可能很奇怪:
```py ```py
def hello(): def hello():
print("Hello") print("Hello")
# even functions are objects # even functions are objects
message = hello message = hello
# call new function # call new function
message() message()
``` ```
调用 message()或 hello()方法,它们具有相同的输出。 那是因为他们指的是同一个对象。 调用`message()``hello()`方法,它们具有相同的输出。 那是因为他们指的是同一个对象。
现在让我们继续装饰。 现在让我们继续装饰。
...@@ -39,31 +39,31 @@ message() ...@@ -39,31 +39,31 @@ message()
装饰器接受一个函数,对其进行扩展并返回。 是的,**函数可以返回函数** 装饰器接受一个函数,对其进行扩展并返回。 是的,**函数可以返回函数**
```py ```py
def hello(func): def hello(func):
def inner(): def inner():
print("Hello ") print("Hello ")
func() func()
return inner return inner
def name(): def name():
print("Alice") print("Alice")
obj = hello(name) obj = hello(name)
obj() obj()
``` ```
在上面的示例中,hello()是装饰器。 在上面的示例中,`hello()`是装饰器。
语句中 语句中
```py ```py
obj = hello(name) obj = hello(name)
``` ```
the function name() is decorated by the function hello(). 函数`name()`由函数`hello()`装饰。
它将功能包装在另一个功能中。 它将功能包装在另一个功能中。
...@@ -74,53 +74,53 @@ the function name() is decorated by the function hello(). ...@@ -74,53 +74,53 @@ the function name() is decorated by the function hello().
可以通过包装功能来扩展它们。 可以通过包装功能来扩展它们。
```py ```py
def who(): def who():
print("Alice") print("Alice")
def display(func): def display(func):
def inner(): def inner():
print("The current user is : ", end="") print("The current user is : ", end="")
func() func()
return inner return inner
if __name__ == "__main__": if __name__ == "__main__":
myobj = display(who) myobj = display(who)
myobj() myobj()
``` ```
who()函数由 display()装饰。 `who()`函数由`display()`装饰。
### 语法糖 ### 语法糖
装饰器是常见的,可以简化。 尽管功能完全相同,但代码更简洁。 装饰器是常见的,可以简化。 尽管功能完全相同,但代码更简洁。
Python 可以使用 **@符号**简化装饰器的使用。 Python 可以使用**`@`符号**简化装饰器的使用。
```py ```py
@hello @hello
def name(): def name():
print("Alice") print("Alice")
if __name__ == "__main__": if __name__ == "__main__":
name() name()
``` ```
这将输出完全相同的内容,但是是编写代码的更简洁的方法。 这将输出完全相同的内容,但是是编写代码的更简洁的方法。
跟我在一起。 通话 跟我在一起。调用:
```py ```py
@hello @hello
def name(): def name():
``` ```
is just a simpler way of writing: 只是一种更简单的书写方式:
```py ```py
obj = hello(name) obj = hello(name)
``` ```
...@@ -128,39 +128,38 @@ obj = hello(name) ...@@ -128,39 +128,38 @@ obj = hello(name)
### 参数 ### 参数
参数可以与装饰器一起使用。 如果您有一个打印总和 a + b 的功能,例如 参数可以与装饰器一起使用。 如果您有一个打印总和`a + b`的功能,例如
```py ```py
def sumab(a,b): def sumab(a,b):
summed = a + b summed = a + b
print(summed) print(summed)
``` ```
您可以将其包装在装饰器函数中。 您可以将其包装在装饰器函数中。以下示例显示了如何执行此操作:
以下示例显示了如何执行此操作:
```py ```py
def pretty_sumab(func): def pretty_sumab(func):
def inner(a,b): def inner(a,b):
print(str(a) + " + " + str(b) + " is ", end="") print(str(a) + " + " + str(b) + " is ", end="")
return func(a,b) return func(a,b)
return inner return inner
@pretty_sumab @pretty_sumab
def sumab(a,b): def sumab(a,b):
summed = a + b summed = a + b
print(summed) print(summed)
if __name__ == "__main__": if __name__ == "__main__":
sumab(5,3) sumab(5,3)
``` ```
函数 sumab 由函数 pretty_sumab 包装。 这用其上方的@符号表示。 函数`sumab`由函数`pretty_sumab`包装。 这用其上方的`@`符号表示。
调用函数 sumab,并查看带有参数的函数 sumab 和 pretty_sumab 的逻辑都已运行。 调用函数`sumab`,并查看带有参数的函数`sumab``pretty_sumab`的逻辑都已运行。
### 真实示例 ### 真实示例
...@@ -173,46 +172,46 @@ if __name__ == "__main__": ...@@ -173,46 +172,46 @@ if __name__ == "__main__":
如果您定义了一个休眠的简单函数,则 如果您定义了一个休眠的简单函数,则
```py ```py
def myFunction(n): def myFunction(n):
time.sleep(n) time.sleep(n)
``` ```
然后,您只需添加@measure_time 行即可测量所需的时间 然后,您只需添加`@measure_time`行即可测量所需的时间
下面的例子: 下面的例子:
```py ```py
import time import time
def measure_time(func): def measure_time(func):
def wrapper(*arg): def wrapper(*arg):
t = time.time() t = time.time()
res = func(*arg) res = func(*arg)
print("Function took " + str(time.time()-t) + " seconds to run") print("Function took " + str(time.time()-t) + " seconds to run")
return res return res
return wrapper return wrapper
@measure_time @measure_time
def myFunction(n): def myFunction(n):
time.sleep(n) time.sleep(n)
if __name__ == "__main__": if __name__ == "__main__":
myFunction(2) myFunction(2)
``` ```
这将输出执行函数 myFunction()所花费的时间。 很酷的事情是,通过添加一行代码 _@measure_time_ ,我们现在可以测量程序执行时间。 这将输出执行函数`myFunction()`所花费的时间。 很酷的事情是,通过添加一行代码`@measure_time`,我们现在可以测量程序执行时间。
![decorator in web app](img/5ec64e3c0ecbb2c70baadd00712318da.jpg) ![decorator in web app](img/5ec64e3c0ecbb2c70baadd00712318da.jpg)
**用例:Web 应用程序** **用例:Web 应用程序**
让我们以 Web 应用程序的使用案例为例。 在 Flask 中构建 Web 应用程序时,您始终会编写网址路由。 让我们以 Web 应用程序的使用案例为例。 在 Flask 中构建 Web 应用程序时,您始终会编写网址路由。
每条路线都是 Web 应用程序中的特定页面。 每条路线都是 Web 应用程序中的特定页面。打开页面`/about`可以调用`about_page()`方法。
打开页面/ about 可以调用 about_page()方法。
```py ```py
@app.route("/about") @app.route("/about")
...@@ -221,6 +220,6 @@ def about_page(): ...@@ -221,6 +220,6 @@ def about_page():
``` ```
在这种情况下,它使用@符号进行装饰。 在这种情况下,它使用`@`符号进行装饰。
[下载示例和练习](https://gum.co/dcsp) [下载示例和练习](https://gum.co/dcsp)
\ No newline at end of file
...@@ -6,7 +6,7 @@ Python 中的网络服务器可以通过两种方式设置。 Python 开箱即 ...@@ -6,7 +6,7 @@ Python 中的网络服务器可以通过两种方式设置。 Python 开箱即
但是,您也可以创建具有独特功能的自定义 Web 服务器。 在本文中,您将学习如何做到这一点。 但是,您也可以创建具有独特功能的自定义 Web 服务器。 在本文中,您将学习如何做到这一点。
此示例中的 Web 服务器只能在本地网络上访问。 它可以是 localhost 或其他网络主机。 您可以使用 VPN 跨位置投放。 此示例中的 Web 服务器只能在本地网络上访问。 它可以是`localhost`或其他网络主机。 您可以使用 VPN 跨位置投放。
...@@ -23,7 +23,7 @@ python3 -m http.server ...@@ -23,7 +23,7 @@ python3 -m http.server
这将在端口 8080 上打开 Web 服务器。然后,您可以在 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) 中打开浏览器。 这将在端口 8080 上打开 Web 服务器。然后,您可以在 [http://127.0.0.1:8080/](http://127.0.0.1:8080/) 中打开浏览器。
也可以使用您的 192.168 .-.-地址通过网络访问 Web 服务器。 也可以使用您的`192.168.*.*`地址通过网络访问 Web 服务器。
这是默认服务器,可用于从计算机下载文件。 这是默认服务器,可用于从计算机下载文件。
...@@ -68,10 +68,10 @@ if __name__ == "__main__": ...@@ -68,10 +68,10 @@ if __name__ == "__main__":
``` ```
如果打开类似 [http://127.0.0.1/example](http://127.0.0.1/example) 的网址,则会调用 do_GET()方法。 我们通过这种方法手动发送网页。 如果打开类似 [http://127.0.0.1/example](http://127.0.0.1/example) 的网址,则会调用`do_GET()`方法。 我们通过这种方法手动发送网页。
![web server in python 3](img/2e75548e489bfe9df1de42082b85a0af.jpg) ![web server in python 3](img/2e75548e489bfe9df1de42082b85a0af.jpg)
变量 self.path 返回所请求的 Web 浏览器 URL。 在这种情况下,它将是/ example 变量`self.path`返回所请求的 Web 浏览器 URL。 在这种情况下,它将是`/example`
[下载示例和练习](https://gum.co/dcsp) [下载示例和练习](https://gum.co/dcsp)
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
> 原文: [https://pythonbasics.org/python-play-sound/](https://pythonbasics.org/python-play-sound/) > 原文: [https://pythonbasics.org/python-play-sound/](https://pythonbasics.org/python-play-sound/)
在 Python 上播放声音很容易。 有几个模块可以播放声音文件(.wav)。 在 Python 上播放声音很容易。 有几个模块可以播放声音文件(`.wav`)。
这些解决方案是跨平台的(Windows,Mac,Linux)。 这些解决方案是跨平台的(Windows,Mac,Linux)。
主要区别在于易用性和受支持的文件格式。 所有这些都应与 Python 3 一起使用。除非您指定路径,否则音频文件应与 python 程序位于同一目录中。 主要区别在于易用性和受支持的文件格式。 所有这些都应与 Python 3 一起使用。除非您指定路径,否则音频文件应与 python 程序位于同一目录中。
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
### `playsound`模块 ### `playsound`模块
playsound 模块是可以播放音频文件的跨平台模块。 它没有任何依赖性,只需在您的 virtualenv 中使用 pip 安装并运行即可! `playsound`模块是可以播放音频文件的跨平台模块。 它没有任何依赖性,只需在您的`virtualenv`中使用`pip`安装并运行即可!
```py ```py
from playsound import playsound from playsound import playsound
...@@ -23,14 +23,13 @@ playsound('audio.mp3') ...@@ -23,14 +23,13 @@ playsound('audio.mp3')
``` ```
在平台上的实现是不同的。 它在 Windows 上使用 windll.winm,在 Apple OS X 上使用 AppKit.NSSound,在 Linux 上使用 GStreamer 在平台上的实现是不同的。 它在 Windows 上使用`windll.winm`,在 Apple OS X 上使用`AppKit.NSSound`,在 Linux 上使用`GStreamer`
我已经使用 Python 3.5.3。进行了测试。 这对 WAV 和 MP3 文件均适用。 我已经使用 Python 3.5.3。进行了测试。 这对 WAV 和 MP3 文件均适用。
### `pydub` ### `pydub`
您可以使用 pydub 模块播放声音文件。 可以在 pypi 储存库中(随 pip 一起安装)。 您可以使用`pydub`模块播放声音文件。 可以在 PyPI 储存库中(随`pip`一起安装)。此模块可以在下面使用 PyAudio 和`ffmpeg`
此模块可以在下面使用 PyAudio 和 ffmpeg。
```py ```py
from pydub import AudioSegment from pydub import AudioSegment
...@@ -43,9 +42,9 @@ play(song) ...@@ -43,9 +42,9 @@ play(song)
### `tksnack` ### `tksnack`
`tksnack`模块声音套件可以播放多个音频文件: _WAV,AU,AIFF,MP3,CSL,SD,SMP 和 NIST / Sphere_ `tksnack`模块声音套件可以播放多个音频文件:WAV,AU,AIFF,MP3,CSL,SD,SMP 和 NIST/Sphere
您可以使用包管理器进行安装:“ apt install python3-tksnack”。 对于旧版本,有“ python-tksnack” 您可以使用包管理器进行安装:`apt install python3-tksnack`。 对于旧版本,有`python-tksnack`
该模块取决于 Tkinter。 这意味着要使用此模块播放声音,您还必须导入 gui 模块 Tkinter。 该模块似乎暂时没有更新。 该模块取决于 Tkinter。 这意味着要使用此模块播放声音,您还必须导入 gui 模块 Tkinter。 该模块似乎暂时没有更新。
...@@ -64,7 +63,7 @@ snd.play(blocking=1) ...@@ -64,7 +63,7 @@ snd.play(blocking=1)
### 本机播放器 ### 本机播放器
您还可以在系统上本地播放声音。 这要求您在终端上安装某种音频播放器。 在 Linux 上,您可以使用 mpg123 您还可以在系统上本地播放声音。 这要求您在终端上安装某种音频播放器。 在 Linux 上,您可以使用`mpg123`
这只是通过外部播放器播放 mp3 文件。 这只是通过外部播放器播放 mp3 文件。
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
您可以在 Python 中将 MP3 直接转换为 WAV。 在本文中,我们将使用 Python 3 进行转换。 对于本教程,任何文件都可以使用。 您可以在 Python 中将 MP3 直接转换为 WAV。 在本文中,我们将使用 Python 3 进行转换。 对于本教程,任何文件都可以使用。
首先,请先安装 ffmpeg。 ffmpeg 是用于音频,视频和多媒体处理的免费程序。 该程序具有控制台界面,但是除了安装它外,没有什么必要。 首先,请先安装`ffmpeg``ffmpeg`是用于音频,视频和多媒体处理的免费程序。 该程序具有控制台界面,但是除了安装它外,没有什么必要。
...@@ -12,16 +12,16 @@ ...@@ -12,16 +12,16 @@
### `pydub` ### `pydub`
安装模块 pydub。 这是 Python 的音频处理模块。 该模块可以打开许多多媒体音频和视频格式。 您可以使用 pip 安装此模块。 安装模块`pydub`。 这是 Python 的音频处理模块。 该模块可以打开许多多媒体音频和视频格式。 您可以使用`pip`安装此模块。
```py ```py
pip install pydub pip install pydub
``` ```
如果尚未安装 ffmpeg,请安装它。 您可以使用包管理器来执行此操作。 如果尚未安装`ffmpeg`,请安装它。 您可以使用包管理器来执行此操作。
对于 Ubuntu / Debian Linux: 对于 Ubuntu/Debian Linux:
```py ```py
apt-get install ffmpeg apt-get install ffmpeg
...@@ -30,9 +30,9 @@ apt-get install ffmpeg ...@@ -30,9 +30,9 @@ apt-get install ffmpeg
### MP3 到 WAV 的转换 ### MP3 到 WAV 的转换
您可以通过更改变量名称将 mp3 文件(src)转换为 wav 文件(dst)。 您可以通过更改变量名称将 mp3 文件(源)转换为 wav 文件(目标)。
mp3 文件必须与程序(.py)位于同一目录中。 如果要使用自定义目录,请在文件名中添加路径。 mp3 文件必须与程序(`.py`)位于同一目录中。 如果要使用自定义目录,请在文件名中添加路径。
```py ```py
from os import path from os import path
...@@ -48,7 +48,7 @@ sound.export(dst, format="wav") ...@@ -48,7 +48,7 @@ sound.export(dst, format="wav")
``` ```
上面的程序使用 pydub 模块进行转换。 该模块本身使用 ffmpeg,这意味着必须安装 ffmpeg 才能成功。 上面的程序使用`pydub`模块进行转换。 该模块本身使用`ffmpeg`,这意味着必须安装`ffmpeg`才能成功。
运行: 运行:
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
## 示例 ## 示例
首先创建带有语音的音频文件。 这可以是任何带有英语单词的音频文件。 将文件另存为 _transcript.mp3_ 首先创建带有语音的音频文件。 这可以是任何带有英语单词的音频文件。 将文件另存为`transcript.mp3`
如果不确定从哪里获得语音音频文件,则可以使用 [Bluemix](https://text-to-speech-demo.ng.bluemix.net/) 生成一个语音文件。 如果不确定从哪里获得语音音频文件,则可以使用 [Bluemix](https://text-to-speech-demo.ng.bluemix.net/) 生成一个语音文件。
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
* 程序 ffmpeg * 程序 ffmpeg
* 模块语音识别 * 模块语音识别
您可以使用 pip 安装 Python 模块。 ffmpeg 可以与您的软件包管理器一起安装(apt-get,emerge,yum,pacman 您可以使用 pip 安装 Python 模块。`ffmpeg`可以与您的软件包管理器一起安装(`apt-get``emerge``yum``pacman`
### 转录 ### 转录
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
2. 加载音频文件, 2. 加载音频文件,
3. 将音频文件提供给特定的识别系统。 3. 将音频文件提供给特定的识别系统。
复制下面的程序,并将其另存为 _transcribe.py_ 复制下面的程序,并将其另存为`transcribe.py`
```py ```py
import speech_recognition as sr import speech_recognition as sr
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册