首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twisted.web文件目录列表问题

Twisted.web文件目录列表问题
EN

Stack Overflow用户
提问于 2013-12-07 05:04:47
回答 1查看 1K关注 0票数 1

我正在尝试在一个web应用中使用Twisted,我遇到了一个有趣的问题。我是Twisted的新手,所以我不确定我是看到了Twisted中的错误,还是没有正确使用它。

从理论上讲,从示例中可以使用File资源对象来提供目录中的文件,以及提供目录列表。因此,假设我在代码片段之前在别处定义了变量(port,reportsDir),我将执行以下操作:

代码语言:javascript
复制
rootResource = Resource()
rootResource.putChild("reports", File(reportsDir))
reactor.listenTCP(port, Site(rootResource))
reactor.run(installSignalHandlers=False)

现在,当我在我的主机上访问'/reports‘时,我在浏览器中收到一条消息"Request by return bytes“,里面有一堆显然是twisted生产的东西,但也包含一个u'.....’的指纹。字符串字面值,它实际上包含目录列表。显然,DirectoryLister正在创建清单HTML,但Twisted中的某些内容并不认为它是有效的。它似乎不喜欢unicode字符串;事实上,它是由Twisted自己生成的。

我是否需要设置一些其他配置项来让它将unicode字符串转换为必要的字节对象(或其他任何对象),或者其他方法?

非常感谢,

-D

EN

回答 1

Stack Overflow用户

发布于 2013-12-07 05:30:25

好吧,看起来问题是Python会将任何字符串提升为unicode,如果某个格式上的任何源字符串是unicode的话。在我的例子中,"reportsDir“是unicode,因为它来自一个XML文件,这设置了它的错误路径。

更改上一行:

代码语言:javascript
复制
rootResource.putChild("reports", File(reportsDir))

至:

代码语言:javascript
复制
rootResource.putChild("reports", File(reportsDir.encode('ascii', 'ignore')))

已修复此问题。然而,我建议Twisted开发人员在File的构造函数中检查unicode,或者在DirectoryLister中简单地检查unicode,如果是,则返回ascii编码版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20433559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档