小编kra*_*r65的帖子

为什么这个来自python的bash调用不起作用?

我有点乱用比特币.当我想获得有关本地比特币安装的一些信息时,我只是运行bitcoin getinfo,我得到这样的东西:

{
    "version" : 90100,
    "protocolversion" : 70002,
    "walletversion" : 60000,
    "balance" : 0.00767000,
    "blocks" : 306984,
    "timeoffset" : 0,
    "connections" : 61,
    "proxy" : "",
    "difficulty" : 13462580114.52533913,
    "testnet" : false,
    "keypoololdest" : 1394108331,
    "keypoolsize" : 101,
    "paytxfee" : 0.00000000,
    "errors" : ""
}
Run Code Online (Sandbox Code Playgroud)

我现在想要在Python内部进行此调用(在任何人指出之前;我知道有比特币的Python实现,我只是想学习自己做).所以我首先尝试执行这样一个简单的ls命令:

import subprocess
process = subprocess.Popen('ls', stdout=subprocess.PIPE)
output = process.communicate()[0]
print output
Run Code Online (Sandbox Code Playgroud)

这工作正常,按预期打印出文件和文件夹列表.那么我这样做了:

import subprocess
process = subprocess.Popen('bitcoin getinfo', stdout=subprocess.PIPE)
output = process.communicate()[0]
print output
Run Code Online (Sandbox Code Playgroud)

但是这会产生以下错误:

Traceback (most …
Run Code Online (Sandbox Code Playgroud)

python bash subprocess bitcoin

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

如何在Flask中动态添加项目到jinja变量?

我正在使用Flask及其jinja2模板引擎构建一个网站,我正在动态构建菜单(如此处所述):

{%
    set navigation_bar = [
        ('/', 'index', 'Home'),
        ('/aboutus/', 'aboutus', 'About Us'),
        ('/faq/', 'faq', 'FAQ')
    ]
%}

{% set active_page = active_page|default('index') -%}

<ul>
{% for href, id, title in navigation_bar %}
    <li{% if id == active_page %} class="active"{% endif %}>
        <a href="{{ href|e }}">{{ title|e }}</a>
    </li>
{% endfor %}
</ul>
Run Code Online (Sandbox Code Playgroud)

现在,如果用户已登录,我想展示一些其他内容.所以在运行时我想将项添加到navigation_bar变量.我试过这样的事情:

{% if g.user.is_authenticated() %}
    {% navigation_bar.append(('/someotherpage', 'someotherpage', 'SomeOtherPage')) -%}
{% endif %}
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,这会导致以下错误: TemplateSyntaxError: Encountered unknown tag 'navigation_bar'. Jinja was …

python variables list jinja2 flask

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

如何从Python中包含'2nd'的字符串中获取日期时间?

我有几个字符串,我想从中得到日期时间.它们的格式如下:

Thu 2nd May 2013 19:00
Run Code Online (Sandbox Code Playgroud)

我几乎知道如何将其转换为日期时间,除了我遇到"2 nd "的问题.我现在有以下内容

>>> datetime.strptime('Thu 02 May 2013 19:00', '%a %d %B %Y %H:%M')
datetime.datetime(2013, 5, 2, 19, 0)
Run Code Online (Sandbox Code Playgroud)

这个月的日期工作正常,零填充数字,但是当我尝试时2nd,它会产生一个ValueError:

>>> datetime.strptime('Thu 2nd May 2013 19:00', '%a %d %B %Y %H:%M')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
    (data_string, format))
ValueError: time data 'Thu 2nd May 2013 19:00' does not match format '%a %d %B %Y %H:%M'
Run Code Online (Sandbox Code Playgroud)

datetime指令列表中,我找不到与日期的有序值(第1,第2,第3等)相关的任何内容.有谁知道我怎么能让这个工作?欢迎所有提示!

python string datetime

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

如果Jinja2中没有十进制值,如何将小数点舍入为零?

我使用(出色的)Flask框架构建了一个网站,现在我想在其中显示一些数字。jinja2提供的舍入过滤器可以正常工作,除非没有十进制值:

{{ 1.55555|round(2) }} -> 1.56
{{ 1.5|round(2) }} -> 1.5
{{ 1.0|round(2) }} -> 1.0
{{ 1|round(2) }} -> 1.0
Run Code Online (Sandbox Code Playgroud)

但我希望最后两个显示像1(没有尾随.0)。有人知道我可以使用jinja2吗?欢迎所有提示!

[编辑]

我尝试使用trim(),但令我惊讶的是,以下代码段给出了TypeError: do_trim() takes exactly 1 argument (2 given)

{{ 1.0|round(2)|trim('.0') }}
Run Code Online (Sandbox Code Playgroud)

python templates rounding jinja2 flask

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

KeyError:Flask_security中的“安全性”吗?

我正在使用Flask建立一个网站,现在我正在其中尝试使用Flask_Security进行基于令牌的身份验证。现在,我想从用户那里获取auth_token,为此我使用了get_auth_token()方法。不幸的是,我在此消息下方得到了堆栈跟踪。

有人知道怎么了吗?欢迎所有提示!

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1836, in __call__
    return self.wsgi_app(environ, start_response)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1820, in wsgi_app
    response = self.make_response(self.handle_exception(e))
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1403, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1817, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1477, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1381, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1475, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python2.7/dist-packages/flask/app.py", line 1461, in dispatch_request …
Run Code Online (Sandbox Code Playgroud)

python flask peewee flask-security

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

如何在 Flask_Security 中获得 auth_token_required 工作?

我正在尝试为使用 Flask 的应用程序构建基于令牌的后端(API),其中我正在尝试使用Flask_Security。由于我使用的是Peewee ORM,我已经按照本指南构建了基本设置,现在我必须构建应该登录用户的视图,然后构建一个实际提供一些有用数据的视图。

所以我返回令牌的登录视图如下所示:

@app.route('/api/login', methods=['POST'])
def api_login():
    requestJson = request.get_json(force=True)
    user = User.select().where(User.username == requestJson['username']).where(User.password == requestJson['password']).first()
    if user:
        return jsonify({'token': user.get_auth_token()})
    else:
        return jsonify({'error': 'LoginError'})
Run Code Online (Sandbox Code Playgroud)

这很好用;我得到一个令牌作为回应。我现在想保护另一个视图auth_token_required,我想使用令牌作为标题。所以我尝试如下:

@app.route('/api/really-important-info')
@auth_token_required('SECURITY_TOKEN_AUTHENTICATION_HEADER')
def api_important_info():
    return jsonify({'info': 'really important'})
Run Code Online (Sandbox Code Playgroud)

但是启动 Flask 会导致AttributeError: 'str' object has no attribute '__module__'. 该文档对其使用也不是很有帮助。

有谁知道我怎样才能让它发挥作用?欢迎任何提示!

python token flask peewee flask-security

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

如何为特定视图创建Flask before_request视图?

我正在使用Flask构建一个系统,它包含一个应用程序的网站和api.我为webview定义了一个before_request,如下所示:

@app.before_request
def before_request():
    g.user = current_user
    # And I do some more stuff here..
Run Code Online (Sandbox Code Playgroud)

我在基于文件夹的结构中得到了我的观点,如下所示:

views (folder)
---------------
  - __init__.py
  - apiviews.py
  - webviews.py
Run Code Online (Sandbox Code Playgroud)

因为我正在为api使用基于令牌的登录系统,我现在想要为所有apiviews定义不同的before_request.有没有办法可以做到这一点?也许我需要定义装饰器或什么?欢迎所有提示!

python before-filter flask

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

升级后无法连接到MongoDB?

我正在使用Flask构建一个网站,我将MongoDB与MongoEngine ORM一起使用.为了重新开始,我现在升级了我的ubuntu 14.04开发机器上的所有apt和pip包.不幸的是,这破坏了我与MongoDB的联系:

Traceback (most recent call last):
  File "./run.py", line 4, in <module>
    from app import app, socketio
  File "/home/kr65/beta/app/__init__.py", line 21, in <module>
    mongoDb = MongoEngine(app)
  File "/usr/local/lib/python2.7/dist-packages/flask_mongoengine/__init__.py", line 33, in __init__
    self.init_app(app)
  File "/usr/local/lib/python2.7/dist-packages/flask_mongoengine/__init__.py", line 66, in init_app
    self.connection = mongoengine.connect(**conn_settings)
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py", line 164, in connect
    return get_connection(alias)
  File "/usr/local/lib/python2.7/dist-packages/mongoengine/connection.py", line 126, in get_connection
    raise ConnectionError("Cannot connect to database %s :\n%s" % (alias, e))
mongoengine.connection.ConnectionError: Cannot connect to database default :
False is not a …
Run Code Online (Sandbox Code Playgroud)

python mongodb mongoengine flask flask-mongoengine

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

Python字符串神奇地转换为元组.为什么?

我有一个dict,其中我加载了一些信息,其中一个名称是一个普通的字符串.但不知何故,当我将它分配给dict中的一个键时,它会转换为一个元组,我不知道为什么.

这是我的一些代码:

sentTo = str(sentTo)
print type(sentTo), sentTo
ticketJson['sentTo'] = sentTo,
print type(ticketJson['sentTo']), ticketJson['sentTo']
Run Code Online (Sandbox Code Playgroud)

在我的终端输出以下内容:

<type 'str'> Pete Chasin
<type 'tuple'> ('Pete Chasin',)
Run Code Online (Sandbox Code Playgroud)

为什么将它分配给dict会将其转换为元组?

python string casting tuples

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

如何在Python中使用.encode('utf-8')?

我正在管理一些Python代码,我现在在日志中看到错误:

Traceback (most recent call last):
  File "./app/core.py", line 772, in scrapeEmail
    l.info('EMAIL SUBJECT: ', header['value'])
  File "./app/__init__.py", line 44, in info
    logging.info(str(datetime.utcnow()) + ' INFO     ' + caller.filename + ':' + str(caller.lineno) + ' - ' + ' '.join([str(x) for x in args]))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xea' in position 25: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

我想这意味着header['value']包含不同编码的字符.

我四处搜索,这个SO答案暗示"将.encode('utf-8')最近版本的Python 放在对象的末尾".

这给我提出了两个问题:

  1. 我需要使用什么对象.encode('utf-8').开x或关str(x).它应该是str(x.encode('utf-8'))或者在str(x).encode('utf-8')
  2. 作者对"最新版本的Python"的意思是什么?我还可以 …

python string encoding utf-8 character-encoding

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