小编Fun*_*ayu的帖子

仅使用python标准库将python UTC日期时间转换为本地日期时间?

我有一个使用datetime.utcnow()创建并保存在数据库中的python datetime实例.

为了显示,我想使用默认的本地时区将从数据库检索的日期时间实例转换为本地日期时间(即,就像使用datetime.now()创建日期时间一样).

如何仅使用python标准库将UTC日期时间转换为本地日期时间(例如,没有pytz依赖项)?

似乎一个解决方案是使用datetime.astimezone(tz),但是如何获得默认的本地时区?

python timezone datetime python-datetime

150
推荐指数
6
解决办法
18万
查看次数

Python Lambda循环

考虑以下代码段:

# directorys == {'login': <object at ...>, 'home': <object at ...>}
for d in directorys:
    self.command["cd " + d] = (lambda : self.root.change_directory(d))
Run Code Online (Sandbox Code Playgroud)

我希望创建一个包含两个函数的字典如下:

# Expected :
self.command == {
    "cd login": lambda: self.root.change_directory("login"),
    "cd home": lambda: self.root.change_directory("home")
}
Run Code Online (Sandbox Code Playgroud)

但看起来生成的两个lambda函数完全相同:

# Result :
self.command == {
    "cd login": lambda: self.root.change_directory("login"),
    "cd home": lambda: self.root.change_directory("login")   # <- Why login ?
}
Run Code Online (Sandbox Code Playgroud)

我真的不明白为什么.你有什么建议吗 ?

python loops anonymous-function

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

Paramiko:阅读SSH协议横幅时出错

最近,我根据paramiko制作了一个连接工作站的代码,其中包含不同的用户名(感谢私钥).

我从来没有遇到任何问题,但今天,我有: SSHException: Error reading SSH protocol banner

这很奇怪,因为它在任何连接上都是随机发生的.有没有办法解决它?

python paramiko

46
推荐指数
2
解决办法
5万
查看次数

ThreeJS:从场景中删除对象

我正在使用ThreeJS开发一个显示实体列表的Web应用程序,每个实体都有相应的"查看"和"隐藏"按钮; 例如,entityName 查看隐藏.当用户单击" 查看"按钮时,将调用以下函数并成功在屏幕上绘制实体.

function loadOBJFile(objFile){            
    /* material of OBJ model */                                          
    var OBJMaterial = new THREE.MeshPhongMaterial({color: 0x8888ff});
    var loader = new THREE.OBJLoader();
    loader.load(objFile, function (object){
        object.traverse (function (child){
            if (child instanceof THREE.Mesh) {
                child.material = OBJMaterial;
            }
        });
        object.position.y = 0.1;
        scene.add(object);
    });     
}

function addEntity(object) {
    loadOBJFile(object.name);
}
Run Code Online (Sandbox Code Playgroud)

在单击" 隐藏"按钮时,将调用以下函数:

function removeEntity(object){
    scene.remove(object.name);
}
Run Code Online (Sandbox Code Playgroud)

问题是,单击" 隐藏"按钮后,一旦加载,实体就不会从屏幕中删除.如何使" 隐藏"按钮起作用?

我做了小实验.我在函数内部scene.remove(object.name);之后添加,结果,当点击"查看"按钮时,没有实体绘制(如预期的那样)意味着内部工作正常.但我仍然无法弄清楚如何在removeEntity(object)中使用它.scene.add(object);addEntityscene.remove(object.name);addEntity

另外,我检查了scene.children的内容,它显示:[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

完整代码: …

javascript three.js

45
推荐指数
3
解决办法
9万
查看次数

在单独的线程中启动烧瓶应用程序

我正在开发一个Python应用程序,我希望在其上看到实时统计信息.我想用Flask它来使它易于使用和理解.

问题是我的Flask服务器应该从我的Python应用程序的最开始开始,并在最后停止.它应该如下所示:

def main():
    """ My main application """
    from watcher.flask import app
    # watcher.flask define an app as in the Quickstart flask documentation.
    # See: http://flask.pocoo.org/docs/0.10/quickstart/#quickstart

    app.run() # Starting the flask application

    do_my_stuff()

    app.stop() # Undefined, for the idea 
Run Code Online (Sandbox Code Playgroud)

因为我需要我的应用程序上下文(用于统计),我不能使用multiprocessing.Process.然后我试图使用a threading.Thread,但看起来Werkzeug不喜欢它:

 * Running on http://0.0.0.0:10079/
Exception in thread Flask Server:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File ".../develop-eggs/watcher.flask/src/watcher/flask/__init__.py", line 14, …
Run Code Online (Sandbox Code Playgroud)

python multithreading flask

39
推荐指数
3
解决办法
3万
查看次数

Python 3类型提示装饰器

请考虑以下代码:

from typing import Callable, Any

TFunc = Callable[..., Any]

def get_authenticated_user(): return "John"

def require_auth() -> Callable[TFunc, TFunc]:
    def decorator(func: TFunc) -> TFunc:
        def wrapper(*args, **kwargs) -> Any:
            user = get_authenticated_user()
            if user is None:
                raise Exception("Don't!")
            return func(*args, **kwargs)
        return wrapper
    return decorator

@require_auth()
def foo(a: int) -> bool:
    return bool(a % 2)

foo(2)      # Type check OK
foo("no!")  # Type check failing as intended
Run Code Online (Sandbox Code Playgroud)

这段代码按预期工作.现在想象一下我想扩展这个,而不是只是执行func(*args, **kwargs)我想在参数中注入用户名.因此,我修改了函数签名.

from typing import Callable, Any

TFunc = Callable[..., Any] …
Run Code Online (Sandbox Code Playgroud)

python typing decorator type-hinting python-3.x

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

Sphinx:ivar标签寻找交叉引用

我想用Sphinx记录Python对象属性.我明白我应该用

:ivar varname: description
:ivar type varname: description
Run Code Online (Sandbox Code Playgroud)

但是我看到了一个奇怪的行为,那就是Sphinx在我的项目中搜索变量名并尝试创建符号链接.例如这段代码:

class A(object):
    """
    :ivar x: some description
    """
    def __init__(self, x):
        self.x = x

class B(object):
    def x(self):
        return 1

class C(object):
    def x(self):
        return 2
Run Code Online (Sandbox Code Playgroud)

会导致此错误:

mylibrary.module1.A的module1.py:docstring:无:警告:找到多个目标为交叉引用u'x':mylibrary.module1.Cx,mylibrary.module1.Bx

我是否错误地理解了:ivar的目的或用法?

python documentation python-sphinx

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

为什么Python没有在try语句上实现elif语句?

让我们举个简单的例子吧.

my_list = [
    {"name": "toto", "value": 3},
    {"name": "foo", "value": 42},
    {"name": "bar", "value": 56}
]

def foo(name):
    try:
        value = next(e["value"] for e in my_list if e["name"] == name)
    except StopIteration:
        print "Uuuh not found."
    else:
        if value % 2:
            print "Odd !"
        else:
            print "Even !"
Run Code Online (Sandbox Code Playgroud)

如您所见,上面的代码有效:

>>> foo("toto")
Odd !
>>> foo("foo")
Even !
>>> foo("kappa")
Uuuh not found.
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么我们不能在这样的elif语句中使用语句有一个特殊的原因try:

try:
    value = next(e["value"] for e in my_list if e["name"] == name) …
Run Code Online (Sandbox Code Playgroud)

python if-statement try-catch

12
推荐指数
1
解决办法
7327
查看次数

Pycharm:在docstring中自动生成`:type param:`字段

当我用参数创建一个函数时,PyCharm让我用:param param_name:字段创建docstring ,这非常好.但我还需要添加:type param_name:.

那样:

def foo(bar, xyz):
    return bar + xyz
Run Code Online (Sandbox Code Playgroud)

使用生成docstring选项我有(即使使用文档存根启用的插入'类型'和'rtype'):

def foo(bar, xyz):
    """


    :param bar:
    :param xyz:
    """
    return bar + xyz
Run Code Online (Sandbox Code Playgroud)

我想的是:

def foo(bar, xyz):
    """


    :param bar:
    :type bar:
    :param xyz:
    :type xyz:
    """
    return bar + xyz
Run Code Online (Sandbox Code Playgroud)

python docstring pycharm

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

如何在文档字符串中为PyCharm解析器指定类或函数类型

我使用了很多Pycharm docstring类型解析器来指定方法参数和返回的类型,属性或实例变量.如果它几乎一直在工作,我有一个关于告诉PyCharm我有一个函数或类作为参数/属性/ ...的问题.

这是一个简短的例子:

class Bar:

    def __init__(self, bar):
        """
        :type bar: str
        """
        print bar

class Foo:
    """
    :type my_class: Bar.__class__
    """

    def __init__(self, cinstance=Bar):
        """
        :type cinstance: Bar.__class__
        """
        self.my_class = cinstance

    def run(self):
        # it should print an unexpected type warning, but it doesn't.
        self.my_class(2)
Run Code Online (Sandbox Code Playgroud)

如果我只是把Bar而不是Bar.__class__,当然PyCharm告诉我,Bar不能打电话.那么如何告诉他我正在给他上课?

请注意,对于@classmethod装饰器,PyCharm没有任何问题可以理解我们正在谈论的是类而不是实例.

以下是我的尝试:

尝试使用<code> Bar .__ name __ </ code>

尝试使用<code> Bar .__ class __ </ code>

尝试使用<code> Bar </ code>

python pycharm python-2.7

9
推荐指数
1
解决办法
5491
查看次数