小编Som*_*DOS的帖子

为什么第二次在同一个文件中运行Python中的"readlines"没有返回任何内容?

>>> f = open('/tmp/version.txt', 'r')
>>> f
<open file '/tmp/version.txt', mode 'r' at 0xb788e2e0>
>>> f.readlines()
['2.3.4\n']
>>> f.readlines()
[]
>>>
Run Code Online (Sandbox Code Playgroud)

我在Python的解释器中试过这个.为什么会这样?

python

5
推荐指数
3
解决办法
7165
查看次数

使用在mercurial存储库中有另一个git subrepo的git subrepo,这可能吗?

我有一个mercurial存储库,并添加了没有问题的git subrepo(hg 1.8).

问题是:这个混帐subrepo内部有它自己的其它混帐subrepository并没有被拉(它在Git的subrepo .gitmodules文件),除非我做了git clone --recursive我的git subrepo:这样做它的工作方式.

问题是:我hg pull在另一台机器的存储库中执行了一次,它会拉动它git subrepo,但它不会拉动它.gitmodules.当我做了一个.gitmodules只被拉到另一台机器上git clone --recursive.

有没有人有任何建议来处理这种情况?该丑陋的解决办法是做一个git clone和简单的所有文件(包括git的元数据)添加到我的Mercurial库,不像个subrepo.

git version-control mercurial subrepos

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

"如果var和var2 == getSomeValue()"在python中 - 如果第一个为false,那么第二个语句是否被评估?

我有一些像这样的代码:

if var:
    if var2 == getSomeValue()
Run Code Online (Sandbox Code Playgroud)

这可以是单个表达式.

if var and var2 == getSomeValue():
Run Code Online (Sandbox Code Playgroud)

...但getSomeValue()只有在var为True时才能调用.

那么,在调用时if var and var2 == getSomeValue(),是否都由解释器评估,或者评估在varif处停止False?我在哪里可以找到有关python文档的信息?(我不知道要搜索什么...:/)

python short-circuiting

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

使用setattr在Plone中的内容类型中设置一个简单的属性是一种不好的做法(我的意思是,它是否会在将来困扰我)?

我在Plone实例上有两个不同的上下文.

第一个上下文有一些ATFolders.第二种,也有ATFolders,必须使用一些订阅者与第一个上下文同步.

在第二个上下文中,ATFolders必须知道它们与第一个上下文中的某些文件夹相关联.

我考虑过使用setattr它们(setattr(obj_context1, attr, obj_context2.UID()))而不是创建一个新的Content-Type只是为了拥有一个ReferenceField属性(或使用archetype.schemaextender),因为这对于特定上下文中的单个参数来说太过分了:文件夹那个例如,将不会从ZODB中删除此属性.只有一个州,他们将拥有一个统一的工作流程.此属性对用户完全隐藏,第二个上下文中的文件夹以编程方式创建,无需用户干预.

此属性应仅存在于第二个上下文中,因此创建适配器或新内容类型只是在此上下文中使用似乎太多了.

我倾向于使用setattr为求实用主义在这种特定情况下,但如果使用我不知道setattr的方法是要缠着我的未来(性能,ZODB冲突等).我的意思是:做一个更新目录,更新工作流程,这个新属性会出现问题吗?

有什么想法吗?setattr在这种情况下有经验的人吗?这个attr将会也不应该是可见的,它仅用于某些控制.

plone

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

无法在我的gvim中使用"语法"

(我是Linux和Vim的新手,我正在努力学习Vim,但我遇到了一些我无法看到的问题.

我正在使用Vim 7.1.138进行Linux安装(Ubuntu 8.04)无法更新.

我的vim安装在/usr/share/vim/vim71/./ home/user中/

我的.vimrc文件位于/home/user/.vimrc,如下:

fun! MySys()
    return "linux"
endfun

set runtimepath=~/.vim,$VIMRUTNTIME
source ~/.vim/.vimrc
Run Code Online (Sandbox Code Playgroud)

然后,在我的/home/user/.vim/.vimrc:

" =============== GENERAL CONFIG ==============
set nocompatible
syntax on

" =============== ENCODING AND FILE TYPES =====
set encoding=utf8
set ffs=unix,dos,mac

" =============== INDENTING ===================
set ai " Automatically set the indent of a new line (local to buffer)
set si " smartindent (local to buffer)

" =============== FONT ========================
" Set font according to system
if MySys() …
Run Code Online (Sandbox Code Playgroud)

syntax vim

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

退格,如果从光标到行首的字符是制表符/空格,则返回一个缩进级别

我正在使用Vim进行Python开发.有时,在if子句中的表达式之后:(假设|是游标).

if test:
    pass
    |
Run Code Online (Sandbox Code Playgroud)

...我按回车键,想要进入if识别级别.

我知道我可以回到命令模式并按下<,但是我想知道当Vim知道光标后面的所有字符都是标签os空格时,是否有可能在按下退格键时返回一个缩进级别(或者shiftwidth)值).

vim indentation text-indent

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

编辑文件并用:w保存后,在vim中删除文件的“只读”属性。

:w!在vim中保存文件时,我想更改文件的只读属性。我该怎么做?(我不介意是否必须调用外部脚本)。

我正在使用Linux。

我知道我可以使用以下命令使用外部脚本:autocmd BufWrite /tmp/* !sh /tmp/script.sh。因此,我想在调用时:w!调用chmod命令:chmod命令将如下所示:

autocmd BufWrite <:w! condition> !chmod u+w %
Run Code Online (Sandbox Code Playgroud)

所以,我该怎么做“:w!” 条件?有可能还是我需要使用其他结构?

unix linux vim readonly

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

有没有类似"符号链接"(在*nixes术语中)但在Plone中的ZODB中的对象?

假设我有一个对象/school1/document-rules.

假设在另一个上下文中/school2,我需要有相同document-rules的可用内容/school1/document-rules.

在ZODB中,拥有/school1/document-rules/school2/document-rules意味着我有两个不同的对象.

我想知道是否可以/school2/document-rules 参考 /school1/document-rules.因此,/school2/document-rules它将类似于"ReferenceDocument","ReferenceLink"或类似于指向的符号链接/school1/document-rules.

为什么?文档是相同的,但有时在不同的上下文中使用相同的文档更有意义(在语义上).我有根据其上下文呈现的portlet,我不想复制document-rules.

有什么像我正在寻找的东西吗?Bultin还是使用模块?

python symlink zope plone zodb

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

如何在 Linux 终端上抑制 Python DeprecationWarnings?

i18ndude使用easy_install.

当我尝试i18ndude在终端上运行该实用程序时,我得到:

/usr/local/lib/python2.6/dist-packages/i18ndude-3.1.2-py2.6.egg/i18ndude/odict.py:7: DeprecationWarning: object.__init__() takes no parameters
  dict.__init__(self, dict)
Run Code Online (Sandbox Code Playgroud)

从命令行调用实用程序时如何抑制这些警告消息?是否可以?我知道理论上我应该安装其他 Python 解释器,并从中调用 i18ndude,但我想要一种更简单的方法(比如参数或类似的东西)。

顺便说一句,我正在使用Plone 官方网站i18ndude的脚本。

python linux warnings deprecated

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

如何在browser/configure.zcml中使用config.py和__init__.py(使用paster)创建的权限获取自定义权限?

我正在使用贴纸来创建我的内容类型和视图.我正在使用Plone 3.3.

在我的config.py:

ADD_PERMISSIONS = {
    # -*- extra stuff goes here -*-
    'MyContentType': 'mynamespace.mypackage: Add My Content Type'
}
Run Code Online (Sandbox Code Playgroud)

在我的__init__.py:

for atype, constructor in zip(content_types, constructors):
    utils.ContentInit('%s: %s' % (config.PROJECTNAME, atype.portal_type),
        content_types=(atype, ),
        permission=config.ADD_PERMISSIONS[atype.portal_type],
        extra_constructors=(constructor,),
        ).initialize(context)
Run Code Online (Sandbox Code Playgroud)

......并且在browser/configure.zcml:

  <browser:page
      for="*"
      name="myview"
      class=".myview.MyView"
      template="myview.pt"
      allowed_interface=".myview.IMyView"
      permission="the permissions defined in ADD_PERMISSIONS: what is the name I can put here?"
      />
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用colective.autopermission创建自定义权限,但我已经使用config.py创建了它们,如何在configure.zcml中使用它们?

编辑:Hum,ZCML中定义的浏览器视图使用Zope 3权限ID,但我的config.py使用Zope 2权限标题.我需要使用collective.autopermission来创建zope 3权限id,或者我可以使用另一种方法(比如只title使用dict中title提供的属性创建permissions.zcml ADD_PERMISSIONS,因为zope 2样式中的权限已经创建所以我不需要collective.autopermission)?

plone

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