我在Python(2.7)中使用shutil中的rmtree方法.
调用此方法时可能发生的所有可能异常是什么?
在python代码中,我经常看到@property的使用.
如果我理解正确,可以使用属性函数定义getter setter和deleter.
如果未定义setter和deleter,为什么会使用@property(@ x.setter,@ x.deleter)?这与不使用@property完全相同吗?
我使用以下setup.py分发了我的python包
#!/usr/bin/env python
from setuptools import setup
setup(name='mypackagename',
version='0.1',
description='Tool ....',
author='Peter Smit',
author_email='lala@lala.com',
packages=['mypackagename'],
package_dir={'': 'src'},
install_requires=['boto'],
entry_points = dict(console_scripts=[
'mypackagenamescript = mypackagename.launcher:run',
])
)
Run Code Online (Sandbox Code Playgroud)
我用它创造了一个鸡蛋python setup.py bdist_egg.
现在尝试使用pip安装它会产生以下错误:
bin/pip install mypackagename-0.1-py2.6.egg
Downloading/unpacking mypackagename-0.1-py2.6.egg
Could not find any downloads that satisfy the requirement mypackagename-0.1- py2.6.egg
No distributions at all found for mypackagename-0.1-py2.6.egg
Run Code Online (Sandbox Code Playgroud)
存储完整的日志/home/peter/.pip/pip.log
提到的日志文件显示它试图从pypi下载包,它显然不存在.
我做错了什么?我怎样才能安装我的这个鸡蛋加上它的依赖?
对于我正在编写的装饰器,我想操作函数的特定命名参数.考虑以下装饰器:
def square_param(param):
def func_decorator(func):
def func_caller(*args,**kwargs):
kwargs[param] = kwargs[param] * kwargs[param]
return func(*args,**kwargs)
return func_caller
return func_decorator
Run Code Online (Sandbox Code Playgroud)
应用于下一个功能:
@square_param('dividend')
def quotient(divisor=1,dividend=0):
return dividend/divisor
Run Code Online (Sandbox Code Playgroud)
如果将dividend作为关键字参数调用,这将起作用,例如:
>>> quotient(dividend=2)
4
Run Code Online (Sandbox Code Playgroud)
但是,当作为位置参数给出时,这将失败.
>>> quotient(3,4)
TypeError: quotient() got multiple values for keyword argument 'dividend'
Run Code Online (Sandbox Code Playgroud)
使用Python 3,我可以通过强制参数始终作为关键字给出来解决这个问题:
@square_param('dividend')
def quotient(divisor=1,*,dividend=0):
return dividend/divisor
Run Code Online (Sandbox Code Playgroud)
但是我想支持Python 2,我也想对这个函数加以限制.
有没有办法可以在装饰器中解决这个问题?
实例方法不能在Python 2或Python 3中自动腌制.
我需要使用Python 3 挑选实例方法,并将Steven Bethard的示例代码移植到Python 3:
import copyreg
import types
def _pickle_method(method):
func_name = method.__func__.__name__
obj = method.__self__
cls = method.__self__.__class__
return _unpickle_method, (func_name, obj, cls)
def _unpickle_method(func_name, obj, cls):
for cls in cls.mro():
try:
func = cls.__dict__[func_name]
except KeyError:
pass
else:
break
return func.__get__(obj, cls)
copyreg.pickle(types.MethodType, _pickle_method, _unpickle_method)
Run Code Online (Sandbox Code Playgroud)
这种方法是否适用于酸洗实例方法?或者有些事情可怕的错误?我用一些模拟类测试了它,一切似乎都有效.
如果什么都不会出错,为什么Python 3中的标准pickle实例方法不可能?
Python具有字符串函数来测试所有字符是否都是数字:string.isdigit().
在手册中写道:
对于8位字符串,此方法取决于区域设置
这种方法如何依赖于locale?在哪些区域设置中有0-9范围之外的数字?
此外,如果这是依赖于语言环境的,那么python是否有一种方法可以使用特定的语言环境(即只有0-9位数)进行检查.
我有一个非常基本的cython测试脚本
test1.pyx:
def do_something(f):
return f
def main():
f = 1
print do_something(f)
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
我编译的是:
cython test1.pyx
gcc -Wall -O2 -g -lm -shared -pthread -fPIC -fwrapv -fno-strict-aliasing -Iinclude/python2.6 -o test1.so test1.c
Run Code Online (Sandbox Code Playgroud)
它有效:
./bin/python -c "import test1; test1.main()"
1
Run Code Online (Sandbox Code Playgroud)
但直接将其称为模块不起作用:
./bin/python -m test1
/mypath/bin/python: No code object available for test1
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?我怎样才能让它直接调用cython脚本?
Cython版本0.12.1
我有一个简单的SQLAlchemy模型:
class Event(Base):
""" The SQLAlchemy declarative model class for a Event object. """
__tablename__ = 'events'
id = Column(Integer, primary_key=True)
date = Column(DateTime)
title = Column(Text)
Run Code Online (Sandbox Code Playgroud)
如何筛选SQLAlchemy查询,以便仅返回特定月份中的事件?
对于科学实验,我需要生成 10 个随机、固定大小的列表子集。为了使实验可重复,我想用已知种子初始化 10 个不同的 random.Random() 实例。
随机种子需要有多不同?似乎表明使用种子 1 到 10 可能是一个坏主意,因为结果可能是线性相关的。
如果在这种情况下选择种子 1 到 10 是不好的做法,那么以可重复的方式选择种子的好策略是什么?
澄清:在程序运行时(使用特定数据集)始终使用相同的种子是很重要的!最后,我的程序必须是确定性的。
我在Go中定义了自己的类型:
type Sha1Hash [20]byte
Run Code Online (Sandbox Code Playgroud)
我想对这些哈希中的两个进行排序,h1和h2:
func Compare(h1, h2 Sha1Hash) int {
h1 >= h2 // doens't work, arrays only have == and !=
bytes.Compare(h1,h2) //doesn't work, Compare only works on slices
}
Run Code Online (Sandbox Code Playgroud)
我如何比较我的阵列?
python ×7
decorator ×2
arrays ×1
compare ×1
digit ×1
distribution ×1
egg ×1
go ×1
locale ×1
pickle ×1
pip ×1
properties ×1
python-3.x ×1
random ×1
shutil ×1
sqlalchemy ×1