小编ved*_*dar的帖子

将 intersphinx 与 automodule 指令一起使用

我使用 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 在线文档中标签的链接。

这样的交互可以实现吗?

django restructuredtext python-sphinx

6
推荐指数
0
解决办法
195
查看次数

intersphinx 未定义标签警告

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 文件中没有得到任何链接。

我究竟做错了什么?

restructuredtext python-sphinx

5
推荐指数
0
解决办法
1621
查看次数

在getattr()函数上调用一个方法

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()方法).

python python-3.x

3
推荐指数
1
解决办法
1664
查看次数

禁用 argparse 选择消息

Argparse 显示有关选项列表的消息,如下例所示:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--styles', choices=long_list_of_styles)
Run Code Online (Sandbox Code Playgroud)

当我传递一个很长的列表时,帮助消息看起来不太好,实际上它看起来很混乱,并且它的存在掩盖了其他参数,因为所有这些选项都被打印出来。

有没有办法告诉Argparser不要打印参数选择?

python argparse python-3.x

3
推荐指数
1
解决办法
977
查看次数

上下文管理器删除临时文件

我正在尝试编写上下文管理器以在处理后有条件地清理临时文件。简化:

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)

python

2
推荐指数
2
解决办法
2492
查看次数

WHERE子句中的引用别名

在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条款中引用别名?

sql postgresql

1
推荐指数
2
解决办法
1093
查看次数

将具有重复项的列转置为唯一列

我想知道是否可以使用分组的重复字段转置列,例如:

+---------+------+
| 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)

excel excel-formula

0
推荐指数
1
解决办法
165
查看次数