>>> 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的解释器中试过这个.为什么会这样?
我有一个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.
我有一些像这样的代码:
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文档的信息?(我不知道要搜索什么...:/)
我在Plone实例上有两个不同的上下文.
第一个上下文有一些ATFolders.第二种,也有ATFolders,必须使用一些订阅者与第一个上下文同步.
在第二个上下文中,ATFolders必须知道它们与第一个上下文中的某些文件夹相关联.
我考虑过使用setattr它们(setattr(obj_context1, attr, obj_context2.UID()))而不是创建一个新的Content-Type只是为了拥有一个ReferenceField属性(或使用archetype.schemaextender),因为这对于特定上下文中的单个参数来说太过分了:文件夹那个例如,将不会从ZODB中删除此属性.只有一个州,他们将拥有一个统一的工作流程.此属性对用户完全隐藏,第二个上下文中的文件夹以编程方式创建,无需用户干预.
此属性应仅存在于第二个上下文中,因此创建适配器或新内容类型只是在此上下文中使用似乎太多了.
我倾向于使用setattr为求实用主义在这种特定情况下,但如果使用我不知道setattr的方法是要缠着我的未来(性能,ZODB冲突等).我的意思是:做一个更新目录,更新工作流程,这个新属性会出现问题吗?
有什么想法吗?setattr在这种情况下有经验的人吗?这个attr将会也不应该是可见的,它仅用于某些控制.
(我是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) 我正在使用Vim进行Python开发.有时,在if子句中的表达式之后:(假设|是游标).
if test:
pass
|
Run Code Online (Sandbox Code Playgroud)
...我按回车键,想要进入if识别级别.
我知道我可以回到命令模式并按下<,但是我想知道当Vim知道光标后面的所有字符都是标签os空格时,是否有可能在按下退格键时返回一个缩进级别(或者shiftwidth)值).
: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!” 条件?有可能还是我需要使用其他结构?
假设我有一个对象/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还是使用模块?
我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的脚本。
我正在使用贴纸来创建我的内容类型和视图.我正在使用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)?