小编mpo*_*ett的帖子

Python的string.format()和Unicode

我遇到了Python的问题string.format()并将Unicode字符串传递给它.这与旧的问题类似,只是在我的情况下,测试代码在打印时爆炸,而不是在logging.info()通话中.将相同的Unicode字符串对象传递给日志记录处理程序可以正常工作.

对于较旧的%格式以及此格式,这同样失败string.format().为了确保它是问题的字符串对象,而不是打印与我的终端严重交互,我尝试在打印之前将格式化的字符串分配给变量.

def unicode_test():
    byte_string = '\xc3\xb4'
    unicode_string = unicode(byte_string, "utf-8")
    print "unicode object type: {}".format(type(unicode_string))
    output_string = "printed unicode object: {}".format(unicode_string)
    print output_string

if __name__ == '__main__':
    unicode_test()
Run Code Online (Sandbox Code Playgroud)

字符串对象似乎假设它正在获得ASCII.

% python -V
Python 2.7.2

% python ./unicodetest.py
unicode object type: <type 'unicode'>
Traceback (most recent call last):
  File "./unicodetest.py", line 10, in <module>
    unicode_test()
  File "./unicodetest.py", line 6, in unicode_test
    output_string = "printed unicode object: {}".format(unicode_string)
UnicodeEncodeError: 'ascii' codec …
Run Code Online (Sandbox Code Playgroud)

python unicode

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

wxPython 需要什么才能成功运行?

我正在尝试让 wxPython 在pyenv基于virtualenvvirtualenvwrapper插件的基于虚拟环境中工作在MacOS 上。我已经阅读了几个关于如何完成这项工作的问题,但大多数答案似乎都假设我使用的是系统 python 版本,和/或只解决了一个损坏设置的一个方面。我还没有看到任何解释 wxPython 在启动时检查什么的内容。

我有 pyenv 编译的 python 3.7 与--enable-framework.

env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.7.4
Run Code Online (Sandbox Code Playgroud)

pyenv 它本身是从 git 中最近(在过去几周内)拉取的,安装在我的 homedir 中。

需要明确的是,我的 Python 工具链中的任何工具或库都不是 Homebrew 安装的。

我的 virtualenv 可以通过--system-site-packages. 据推测,访问框架和显示是 wxPython 工作所需的全部内容,但在任何测试应用程序启动时,我仍然遇到相同的错误:

该程序需要访问屏幕。请使用 Python 的框架版本运行,并且仅当您在 Mac 的主显示屏上登录时才运行。

在我看来,我应该需要的一切都可用。

% pyenv which python3.7
/Users/matt/.pyenv/versions/3.7.4/bin/python3.7

% mkvirtualenv --system-site-packages --python python3.7 wxtest
Running virtualenv with interpreter /Users/matt/.pyenv/shims/python3.7
Already using interpreter /Users/matt/.pyenv/versions/3.7.4/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Users/matt/.pyenv/versions/3.7.4/Python.framework/Versions/3.7'
New python executable in …
Run Code Online (Sandbox Code Playgroud)

macos wxpython python-3.x pyenv

7
推荐指数
1
解决办法
460
查看次数

删除/重写HTTP标头'Server:TwistedWeb'

有一些方法可以从基于Twisted的Web应用程序的响应中删除HTTP Header'Server:TwistedWeb/13.1.0'吗?

python http-headers twisted.web

6
推荐指数
1
解决办法
2279
查看次数

安装所有用户可用的共享 pyenv 版本

我有一个 shell 服务器,被研究人员占用,他们都在自己的项目上工作,拥有自己所需的 python 和 python 库版本。但是有很多重叠,特别是在所需的python版本中,我发现我们在主目录中浪费了大量空间,因为安装了许多相同版本的python的多个副本。

我想找到一种体面的方式来versions全局安装 pyenv ,并允许所有用户为自己的envs. pyenv 似乎只使用 PYENV_ROOT 来查找版本的安装位置,并且没有一个独立的类似 PATH 的变量来允许多个版本的搜索路径。它还放在envspython 版本目录中,这似乎与共享版本不兼容。

当然,其他人以前必须解决这个问题。有没有人找到成功让用户共享 pyenv 版本的方法?

python pyenv

5
推荐指数
1
解决办法
633
查看次数

通过 Interface Builder 使 NSTableView 列可排序

我有一个 NSTableView,我想使用 Interface Builder 方法对其进行排序,但我在 Apple 的指南和示例代码描述中遇到了问题。根据对原始问题的评论,我认为这个文档已经过时了,并且指向了错误的方向,所以我正在重写我的问题。

鉴于对默认 Cocoa 应用程序模板的以下添加:

class Foo: NSObject {

    @objc dynamic var name : String
    @objc dynamic var colour : String

    override init() {
        name = "name"
        colour = "colour"

        super.init()
    }

    init(_ name : String, _ colour : String) {
        self.name = name
        self.colour = colour

        super.init()
    }
}
class ViewController: NSViewController {

    @objc dynamic var fooList : [Foo] = [Foo("Bar", "Red"),
                                         Foo("Baz", "Green"),
                                         Foo("Beelzebub", "Blue")]

}
Run Code Online (Sandbox Code Playgroud)

我已经添加的NSArrayController,并NSTableview在该视图控制器 …

nstableview swift4 xcode9

4
推荐指数
1
解决办法
792
查看次数

浮点运算实际上做什么(int)前缀?

在一些示例代码中,我看到使用了这种语法:

float1 = 7.0
float2 = 2.0
result = (int)(float1/float2)
Run Code Online (Sandbox Code Playgroud)

关键点似乎是强制结果为整数,但我找不到任何记录(int)正在使用的语法的地方,或者为什么它会更好int(float1/float2).调用int()本身应该返回零,但(0)(float1/float2)抛出一个TypeError并抱怨零不是可调用的.很明显,解释器正在尝试执行int()引用,但是我不清楚它为什么会在那里找到可调用的东西.

有人能指点我这个语法的一些文档吗?

python python-2.7

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

如何在 python 2 和 3 中使用 unicode_literals 获得兼容的 type() 行为?

这个问题看起来与这个问题非常相似,但是评论中的建议不起作用(不再?),如下所示。

我正在尝试编写一个 python2-3 兼容包,我的方法之一有一个类生成器,并且type()在 python-2.7 测试中给我带来了问题:

Python 2.7.13 (default, Mar 18 2017, 17:03:32) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import unicode_literals
>>> from builtins import str
>>> type('MyClass', (object,), {})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: type() argument 1 must be string, not unicode
>>> type(str('MyClass'), (object,), {})
Traceback (most recent call last):
  File "<stdin>", …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 python-unicode python-3.6

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

将备用 flake8 规则应用于文件子集

我有一个项目,我使用 tox 进行测试,它运行 flake8 测试。我想对我的测试目录应用与其他目录不同的 flake8 配置;我想在测试中忽略 E402,因为我sys.path在导入要测试的模块之前搞乱了。

flake8 配置语法仅允许您将一种配置应用于包含/排除匹配的文件,因此我添加了./tests/.flake8仅适用于这些文件的配置。

./tox.ini

[tox]
envlist = lint, py27, py36

[testenv]
commands =
    coverage run --source=myModule -a setup.py test

[testenv:lint]
basepython = python3
ignore_errors = True
deps =
    -r{toxinidir}/requirements_test.txt
commands =
    flake8
    pylint myModule
    pydocstyle myModule tests

[flake8]
count = true
statistics = True
Run Code Online (Sandbox Code Playgroud)

./测试/.flake8

[flake8]
ignore = E402
Run Code Online (Sandbox Code Playgroud)

使用我的文件中的 flake8 选项tox.ini,点文件始终被忽略。如果文件中没有选项,tox.ini则 flake8 从命令行运行时会使用 dotfile,但在 tox 运行时会被忽略。

看起来没有办法将不同的 flake8 配置应用于同一项目下的不同文件集。我是否在配置语法中遗漏了一些可以让我在这里做我想做的事情的东西?

python tox flake8

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

用于负载平衡的哈希字符串

我可以找到大量有关用于混淆或查找表的散列字符串的信息,其中避免冲突是主要问题。我正在尝试组合一个哈希函数以实现负载平衡,其中我希望将一组未知的字符串放入任意少量的具有相对均匀分布的桶中。碰撞是预料之中的(甚至是期望的)。

我的直接用例是应用程序中的负载分配,我希望应用程序的每个实例在半小时的不同时间触发,而不需要有关其他实例的任何状态信息。所以我尝试将字符串哈希为 0 到 29 之间的整数值。但是,一般方法具有更广泛的应用,不同的 int 范围用于不同的目的。

任何人都可以提出建议,或者向我指出涵盖哈希生成这个小角落的文档吗?

我选择的语言是 python,但我可以阅读最常见的语言,所以任何东西都应该适用。

python string hash load-balancing function

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