我使用 Sphinx 来记录具有 intesphinx 扩展的 Django 应用程序,我想知道是否可以利用现有的intersphinx_mappingDjango 文档作为automodule指令。
我可以在我的剩余源中成功引用 Django 标签。
例如,我有这个指令:
.. automodule:: email_app.models.dbmail_models
:members:
Run Code Online (Sandbox Code Playgroud)
结果我得到了这段摘录:
类 email_app.models.dbmail_models。DbmailMessages (...)
基础:django.db.models.base.Model
wheredjango.db.models.base.Model不是一个链接,:ref:`django:django.db.models.base.Model而是一个常规字符串,而我想让它成为django.db.models.base.ModelDjango 在线文档中标签的链接。
这样的交互可以实现吗?
在http://sphinx-doc.org/latest/ext/intersphinx.html之后,我添加sphinx.ext.intersphinx到我的扩展中conf.py,然后我定义了到 Python 2.7 文档的映射:
intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None)}
Run Code Online (Sandbox Code Playgroud)
我在我的 reST 源中添加了这个参考:
:ref:`comparison manual <python:comparisons>`
Run Code Online (Sandbox Code Playgroud)
我还下载了https://docs.python.org/2.7/objects.inv,我将其解码为 reST,以确认 objects.inv 中存在比较标签:
:std:label:comparisons:
:Link: :std:label:`python:comparisons`
:Domain: Python
:Version: 2.7
:URL: reference/expressions.html#comparisons
:Title: Comparisons
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试构建文档时,我收到以下警告:
警告:未定义标签:python:comparisons(如果链接没有标题,则标签必须位于节标题之前)
我在构建 html 文件中没有得到任何链接。
我究竟做错了什么?
我python-metar用来解码METAR数据.解析METAR字符串后返回的对象如下所示:
>>> dir(decoded)[-5:]
['wind_shift', 'wind_shift_time', 'wind_speed', 'wind_speed_peak', 'windshear']
Run Code Online (Sandbox Code Playgroud)
这些属性,还有其他方法- value(),unit()和string().我使用getattr()内置函数遍历所有这些:
>>> attributes = [..., 'wind_speed', 'wind_speed_peak', 'windshear']
>>> for attr in attributes:
>>> print(getattr(decoded, attr))
Run Code Online (Sandbox Code Playgroud)
但是这样我得到了默认的字符串表示,这是一个带有值及其单位的字符串,比如10 knots,虽然我想得到的数值,我可以通过value()方法得到:
>>> decoded.wind_speed.value()
10.0
Run Code Online (Sandbox Code Playgroud)
所以我无法想象如何使用getattr()并同时调用一个方法(在本例中为value()方法).
Argparse 显示有关选项列表的消息,如下例所示:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--styles', choices=long_list_of_styles)
Run Code Online (Sandbox Code Playgroud)
当我传递一个很长的列表时,帮助消息看起来不太好,实际上它看起来很混乱,并且它的存在掩盖了其他参数,因为所有这些选项都被打印出来。
有没有办法告诉Argparser不要打印参数选择?
我正在尝试编写上下文管理器以在处理后有条件地清理临时文件。简化:
import os
from contextlib import contextmanager
from subprocess import Popen
from tempfile import NamedTemporaryFile
@contextmanager
def temp(cleanup=True):
tmp = NamedTemporaryFile(delete=False)
try:
yield tmp
finally:
cleanup and os.remove(tmp.name)
with temp() as tmp:
tmp.write(b'Hi')
p = Popen(['cmd', '/c', 'type', tmp.name])
p.wait()
Run Code Online (Sandbox Code Playgroud)
尝试这个脚本会引发:
Traceback (most recent call last):
File "C:\temp\test.py", line 18, in <module>
p.wait()
File "C:\Python35\lib\contextlib.py", line 66, in __exit__
next(self.gen)
File "C:\temp\test.py", line 13, in temp
cleanup and os.remove(tmp.name)
PermissionError: [WinError 32] The process cannot access the file because it …Run Code Online (Sandbox Code Playgroud) 在psql中,尝试引用WHERE子句中的别名:
SELECT
SUBSTRING(pk, 6, 2)::INT AS _year
FROM
listing
WHERE
_year > 90
Run Code Online (Sandbox Code Playgroud)
它会导致错误:
ERROR: column "_year" does not exist
LINE 1: ...STRING (pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90...
^
********** Error **********
ERROR: column "_year" does not exist
Run Code Online (Sandbox Code Playgroud)
是否可以在WHERE条款中引用别名?
我想知道是否可以使用分组的重复字段转置列,例如:
+---------+------+
| field_1 | 1 |
| field_2 | 2 |
| field_3 | 3 |
| field_4 | 4 |
| field_1 | 5 |
| field_2 | 6 |
| field_3 | 7 |
| field_4 | 8 |
| field_1 | 9 |
| field_2 | 10 |
| field_3 | 11 |
| field_4 | 12 |
+---------+------+
Run Code Online (Sandbox Code Playgroud)
到唯一的列,像这样:
+---------+---------+---------+---------+
| field_1 | field_2 | field_3 | field_4 |
+---------+---------+---------+---------+
| 1 | 2 | …Run Code Online (Sandbox Code Playgroud)