鉴于这段代码:
from glob import glob, iglob
for fn in glob('/*'):
print fn
print ''
for fn in iglob('/*'):
print fn
Run Code Online (Sandbox Code Playgroud)
阅读glob 的文档我看到glob()返回一个基本的文件列表,iglob是一个Iterator.但是,我能够迭代两者,并且每个文件返回相同的文件列表.
我已经阅读了有关Iterator的文档,但它还没有真正了解这个主题!
那么iglob()返回一个Iterator会给我带来glob()的列表有什么好处呢?我是否能从我的老朋友那里获得额外的功能?
Django 1.7提及类的文档RunSQL可用于在表上创建部分索引.我有一个表,我想的组合title,blog和category是唯一的.但是,如果未提供类别,则标题和博客的组合仍应是唯一的.
class Post(models.Model):
title = models.CharField(max_length=200)
blog = models.ForeignKey(Blog)
category = models.ForeignKey(Category, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
我可以使用部分索引实现此约束(如下面显示的SQL).如果我使用Django 1.7迁移,我在哪里添加此代码?
CREATE UNIQUE INDEX idx1
ON Post (title, blog_id, category_id)
WHERE category_id IS NOT NULL;
CREATE UNIQUE INDEX idx2
ON Post (title, blog_id)
WHERE category_id IS NULL;
Run Code Online (Sandbox Code Playgroud) django django-models django-orm django-1.7 django-migrations
我在我的程序中的路径上使用os.path.split()函数来获取文件的文件名和路径名,然后将它们传递给另一个方法,但我当前的解决方案看起来相当丑陋:
path = os.path.split(somefile)
some_class(path[0], path[1])
Run Code Online (Sandbox Code Playgroud)
是否可以在调用some_class时以更干净的方式解压缩路径元组?就像是:
some_class(os.path.split(somefile).unpack())
Run Code Online (Sandbox Code Playgroud)
或者我应该简单地以另一种方式去做?也许是更加pythonic的方式?
我想在JDateChooser字段中检测日期何时更改,以便我可以更新另一个字段.
这可能吗?如果是这样我应该在哪里开始?我已经查看了文档,遗憾的是没有添加类似ActionListener或StateChangeListener的方法(我的第一个想法).
我有一个不同长度字符串的列表,我正在循环:
set my_list to {"abc", "defg", "hi", "jklmno"}
repeat with the_item in my_list
-- get index of the_item
end repeat
Run Code Online (Sandbox Code Playgroud)
我如何在循环时找到the_item的索引?
在Postgres数据库中给出此模式:
CREATE TABLE person (
id serial PRIMARY KEY,
name text,
birth_date date,
);
Run Code Online (Sandbox Code Playgroud)
我如何在今天之后查询表格以获取每个人下一个生日的日期?
例如,如果鲍勃birth_date是2000-06-01,那么他的下一个生日将是2016-06-01.
注意:我不是在寻找birth_date+一个预定义的interval,而是一个人出生的下一个周年纪念日.
我在Python中编写了等价物:
def next_birthday(self):
today = datetime.date.today()
next_birthday = self.birth_date.replace(year=today.year)
if next_birthday < today:
next_birthday = next_birthday.replace(year=today.year + 1)
return next_birthday
Run Code Online (Sandbox Code Playgroud)
但是我想看看Postgres能否以更高效的方式做到这一点.
我经常对一个文件进行区分,确定它是我将要播放git add /long/path/to/file的文件然后必须运行以手动指定文件.
通常的工作流程将遵循:
git status
"oooh改变"
git diff /long/path/to/changed/file
"是的,我记得 - 承诺时间!"
git add /long/path/to/changed/file
显然,这不是世界上最困难的事情,它只是有点单调乏味.我知道我也可以进入交互模式,但这从来都不适合我的工作流程.
所以我正在寻找一些神奇的unix或git命令,在那里我可以说"嘿,那个文件我只是差异 - 请它上演!".
在Git或Bash中是否存在类似的东西?或者我需要在bash脚本中构建它?
我正在尝试创建一个与罗盘一起使用的本地配置文件,以便我们可以在开发人员的机器上处理不同的导入路径.到目前为止,我已经尝试在异常块中导入文件,如果它不存在,那么进一步使用该变量:
local_config.rb
VENV_FOLDER = 'venv'
Run Code Online (Sandbox Code Playgroud)
config.rb
VENV_FOLDER = '.'
begin
require 'local_config.rb'
rescue LoadError
end
puts VENV_FOLDER
Run Code Online (Sandbox Code Playgroud)
一般情况下我是一个Python开发人员,所以我预计进口到改变的值VENV_FOLDER来venv,但它仍然是.事后.
有没有办法以local_config.rb这样的方式导入它覆盖的值VENV_FOLDER?
我的管理员看起来像这样(没有排除变量):
class MovieAdmin(models.ModelAdmin)
fields = ('name', 'slug', 'imdb_link', 'start', 'finish', 'added_by')
list_display = ('name', 'finish', 'added_by')
list_filter = ('finish',)
ordering = ('-finish',)
prepopulated_fields = {'slug': ('name',)}
form = MovieAdminForm
def get_form(self, request, obj=None, **kwargs):
form = super(MovieAdmin, self).get_form(request, obj, **kwargs)
form.current_user = request.user
return form
admin.site.register(Movie, MovieAdmin)
Run Code Online (Sandbox Code Playgroud)
表格:
class MovieAdminForm(forms.ModelForm):
class Meta:
model = Movie
def save(self, commit=False):
instance = super(MovieAdminForm, self).save(commit=commit)
if not instance.pk and not self.current_user.is_superuser:
if not self.current_user.profile.is_manager:
instance.added_by = self.current_user.profile
instance.save()
return instance
Run Code Online (Sandbox Code Playgroud)
我正在尝试删除用户的added_by字段,因为我更愿意从会话中填充它.我尝试过以下方法:
我试图劫持对我的班级的任何调用,并将它们传递给我在课堂上选择的方法.
我的班级到目前为止:
class Klass(object):
def __getattribute__(self, name):
if name == '_dummy_func':
return object.__getattribute__(self, name)
return object.__getattribute__(self, 'dummy_func')
def _dummy_func(self):
print 'dummy func called!'
Run Code Online (Sandbox Code Playgroud)
我这样做时有效:
cls = Klass()
cls.foo()
Run Code Online (Sandbox Code Playgroud)
但尝试这样做时会摔倒:
cls = Klass()
cls.foo.bar()
Run Code Online (Sandbox Code Playgroud)
因为dummy_func没有属性bar.
我试着__getattribute__()通过检查是否name是这里描述的函数来捕获这种嵌套行为,但它是一个字符串而不是实际变量.
有没有办法从里面抓住这个Klass?
python ×3
django ×2
applescript ×1
bash ×1
django-1.7 ×1
django-admin ×1
django-orm ×1
forms ×1
git ×1
iterator ×1
java ×1
jcalendar ×1
jdatechooser ×1
list ×1
loops ×1
postgresql ×1
ruby ×1
swing ×1
tuples ×1