在Python 2.7中,当将一个unicode字符串传递给XML声明fromstring()中包含的ElementTree 方法时encoding="UTF-16",我得到一个ParseError,说明指定的编码不正确:
>>> from xml.etree import ElementTree
>>> data = u'<?xml version="1.0" encoding="utf-16"?><root/>'
>>> ElementTree.fromstring(data)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files (x86)\Python 2.7\lib\xml\etree\ElementTree.py", line 1300, in XML
parser.feed(text)
File "C:\Program Files (x86)\Python 2.7\lib\xml\etree\ElementTree.py", line 1642, in feed
self._raiseerror(v)
File "C:\Program Files (x86)\Python 2.7\lib\xml\etree\ElementTree.py", line 1506, in _raiseerror
raise err
xml.etree.ElementTree.ParseError: encoding specified in XML declaration is incorrect: line 1, column 30
Run Code Online (Sandbox Code Playgroud)
那是什么意思?是什么让ElementTree这么认为?
毕竟,我传递的是unicode代码点,而不是字节串.这里没有涉及编码.怎么会不正确?
当然,有人可能会争辩说任何编码都是不正确的,因为这些unicode代码点没有被编码.但是,为什么UTF-8不被拒绝为"错误编码"?
>>> ElementTree.fromstring(u'<?xml version="1.0" …Run Code Online (Sandbox Code Playgroud) 我使用Mono的xbuild 2.10.5.0构建了VS2010项目.这些项目使用".NET Framework 3.5 Client Profile"作为目标框架(它们必须兼容3.5并且我不需要超过客户端配置文件部分).
我收到以下警告:
Build succeeded.
Warnings:
c:\Project\MyProject.csproj (default targets) -> C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets (GetReferenceAssemblyPaths target) ->
C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Unable to find framework corresponding to the target framework moniker '.NETFramework,Version=v3.5,Profile=Client'. Framework assembly references will be resolved from the GAC, which might not be the intended behavior.
c:\Project\MyProject.csproj (default targets) -> C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets (ResolveAssemblyReferences target) ->
C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Reference 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' not resolved
C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Found a conflict between : 'System' and 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. …Run Code Online (Sandbox Code Playgroud) from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
Run Code Online (Sandbox Code Playgroud)
当我这样做时,CELERYD_TASK_LOG_FORMAT被忽略而日志语句使用CELERYD_LOG_FORMAT,而我无法使用%(task_name)s和%(task_id)s.
我的任务是tasks在我的应用程序的模块中myapp.因此,__name__是myapp.tasks.
我假设问题是这些行celery/utils/log.py:
def get_task_logger(name):
logger = get_logger(name)
if logger.parent is logging.root:
logger.parent = task_logger
return logger
Run Code Online (Sandbox Code Playgroud)
因此无论出于何种原因,传递给的模块get_task_logger()必须是第一级模块,否则不会附加任务记录器.没有评论解释为什么会出现这种情况(我想不出你为什么会添加这个限制的原因).__name__不起作用,因为它引用了第二级模块.
我犯了错误还是文档错了?如果是这样,我应该传递给他的是什么get_task_logger()?
我正在使用Greasemonkey脚本中非常简单的GAE实例.这在过去几个月中运行良好,但现在路径被附加到最终的"继续"位置,这会破坏我的登录过程.
基本工作流程,假设用户已登录其Google帐户,但他的GAE实例令牌已超时:
window.location在其上设置.最后一步不再有效,因为用户现在被重定向到loginurl 加上一些,这在目标站点上提供了404.
GAE代码只有大约一半的代码.认证相关代码是这样的:
if not users.get_current_user():
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('login_needed|'+users.create_login_url(self.request.get('uri')))
Run Code Online (Sandbox Code Playgroud)
请求序列如下,全部由重定向引起:
targetsite.com不喜欢这条道路,正如你所看到的,它是不是在最初的"继续"传递给appengine.google.com说法,这只是"https://targetsite.com/".我做错了什么,如何解决这个问题?
我正在尝试编写一个方法来接受对布尔标志的引用并修改它们.布尔值都是单独声明的(即不在可索引的数据结构中),并且方法的调用者应该能够决定修改哪些布尔值.
示例代码(这适用):
class Program
{
private static bool b1, b2, b3, b4, b5;
private static void doSomething(ref bool setTrue, ref bool setFalse, ref bool invert)
{
setTrue = true;
setFalse = false;
invert = !invert;
}
static void Main(string[] args)
{
Console.WriteLine("Pre: {0}, {1}, {2}, {3}, {4}", b1, b2, b3, b4, b5);
doSomething(ref b1, ref b3, ref b5);
Console.WriteLine("Post: {0}, {1}, {2}, {3}, {4}", b1, b2, b3, b4, b5);
}
}
Run Code Online (Sandbox Code Playgroud)
输出,如预期:
Pre: False, False, False, False, False
Post: True, …Run Code Online (Sandbox Code Playgroud) 我正在为我的Django 1.4.3项目创建一个使用South 0.7.6的模式迁移,并启用了时区支持.
模式迁移包括在一个表上添加DateTimeField(with auto_now=True).
在创建迁移时,South提示我:
The field 'MyTable.my_field' does not have a default specified, yet is NOT NULL.
Since you are adding this field, you MUST specify a default
value to use for existing rows. Would you like to:
1. Quit now, and add a default to the field in models.py
2. Specify a one-off value to use for existing columns now
Run Code Online (Sandbox Code Playgroud)
如果我不关心现有行的这个值,那么这里给出的正确的一次性值是多少(我只希望迁移成功而没有警告)?
到目前为止,我用过datetime.datetime.utcnow().但是,在应用迁移时,我得到以下内容:
C:\Python27\lib\site-packages\django\db\models\fields\__init__.py:808:
RuntimeWarning: DateTimeField received a naive datetime (2013-01-16 00:00:00)
while …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Dockerfile,它需要运行多个命令作为CMD指令的一部分,我认为正确的方法是运行一个带有主守护进程的shell脚本exec.不幸的是,作为该过程的一部分,我的一些输出(stdout?stderr?我不知道,我不知道如何找出)迷失了.
这是shell脚本:
#!/bin/sh
python manage.py migrate
exec python manage.py runserver 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)
这个想法是migrate命令只运行一次并显示其输出,然后runserver命令应该接管并且容器运行直到该进程退出.
实际问题是输出migrate正确显示,但未显示立即输出runserver.奇怪的是,后来的请求记录runserver显示得很好.
澄清一下,这是我预期的输出:
[...]
No migrations to apply.
[...]
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[21/Jan/2015 16:27:06] "GET / HTTP/1.1" 200 15829
Run Code Online (Sandbox Code Playgroud)
这是我得到的fig up:
[...]
No migrations to apply.
[...]
[21/Jan/2015 16:27:06] "GET / HTTP/1.1" 200 15829
Run Code Online (Sandbox Code Playgroud)
我甚至都不确定这是谁的错.runserver命令是否根据其运行方式更改其输出?这有问题exec吗?是docker/fig?
作为一个额外的数据点,我注意到在运行容器时我确实获得了所有输出fig run web,但不是在我这样做时fig up …
我正在尝试使用包含的单元测试为Python项目创建一个安装包.我的项目布局如下:
setup.py
src/
disttest/
__init__.py
core.py
tests/
disttest/
__init__.py
testcore.py
Run Code Online (Sandbox Code Playgroud)
我setup.py看起来像这样:
from distutils.core import setup
import setuptools
setup(name='disttest',
version='0.1',
package_dir={'': 'src'},
packages=setuptools.find_packages('src'),
test_suite='nose.collector',
tests_require=['Nose'],
)
Run Code Online (Sandbox Code Playgroud)
该文件tests/disttest/testcore.py包含该行from disttest.core import DistTestCore.
setup.py test现在跑步给了一个ImportError: No module named core.
一个setup.py install,python -c "from disttest.core import DistTestCore"工作正常.它也可以,如果我把import core成src/disttest/__init__.py,但我真的不希望维护和似乎只有必要的测试.
这是为什么?什么是解决它的正确方法?
我在Java中使用以下语句:
Arrays.fill(mynewArray, oldArray.Length, size, -1);
Run Code Online (Sandbox Code Playgroud)
请建议等效的C#.
我PGError: ERROR: integer out of range从尝试插入以下整数获取消息:100001389928198.
根据关于数值数据类型的Postgres文档,限制要高得多(9223372036854775807).我有一种感觉Heroku将列视为常规整数而不是BIGINT.
我将迁移定义为BIGINT:
t.column :uid, :bigint
Run Code Online (Sandbox Code Playgroud)
这在Heroku迁移方面不正确吗?
python ×3
c# ×2
django ×2
arrays ×1
c#-3.0 ×1
celery ×1
distutils ×1
django-south ×1
docker ×1
elementtree ×1
encoding ×1
exec ×1
fig ×1
heroku ×1
java ×1
migration ×1
mono ×1
postgresql ×1
python-2.7 ×1
ref ×1
setuptools ×1
shell ×1
unicode ×1
xbuild ×1