Python似乎具有复制文件(例如shutil.copy
)和复制目录的函数(例如)的功能,shutil.copytree
但我没有找到任何处理这两者的函数.当然,检查是否要复制文件或目录是微不足道的,但这似乎是一个奇怪的遗漏.
真的没有像unix cp -r
命令那样工作的标准函数,即递归支持目录和文件以及副本吗?在Python中解决这个问题最优雅的方法是什么?
我有一个文件,其中包含一些不同值的概率,例如:
1 0.1
2 0.05
3 0.05
4 0.2
5 0.4
6 0.2
Run Code Online (Sandbox Code Playgroud)
我想用这个发行版生成随机数.是否存在处理此问题的现有模块?自己编写代码相当简单(构建累积密度函数,生成随机值[0,1]并选择相应的值)但似乎这应该是一个常见问题,可能有人创建了一个函数/模块它.
我需要这个,因为我想生成一个生日列表(不遵循标准random
模块中的任何分发).
我有一些类看起来像这样:
class Base:
subs = [Sub3,Sub1]
# Note that this is NOT a list of all subclasses!
# Order is also important
class Sub1(Base): pass
class Sub2(Base): pass
class Sub3(Base): pass
...
Run Code Online (Sandbox Code Playgroud)
现在,这失败了,因为Base.subs时没有定义Sub1和Sub3.但显然我不能把子类放在Base之前.有没有办法在Python中转发声明类?我想使用,isinstance
因此subs中的类型实际上必须与后面声明的子类相同,它们具有相同的名称和其他属性是不够的.
一个解决方法是:Base.subs = [Sub3,Sub1]
在定义了子类之后,但我不喜欢以这种方式拆分我的类.
编辑:添加了有关订单的信息
我有一个python脚本myscript.py,我希望使用distutils安装:
from distutils.core import setup
setup(..., scripts=['myscript.py'], ...)
Run Code Online (Sandbox Code Playgroud)
如果我可以使用myscript
而不是键入来调用已安装的脚本,我更喜欢myscript.py
.这可以通过将文件重命名为just来实现,myscript
但许多编辑器等将不再理解它是Python文件.
有没有办法保留旧名称,myscript.py
但仍然安装文件myscript
?
我将一些音频数据加载到numpy数组中,我希望通过查找静音部分来分割数据,即音频幅度在一段时间内低于某个阈值的部分.
一个非常简单的方法是这样的:
values = ''.join(("1" if (abs(x) < SILENCE_THRESHOLD) else "0" for x in samples))
pattern = re.compile('1{%d,}'%int(MIN_SILENCE))
for match in pattern.finditer(values):
# code goes here
Run Code Online (Sandbox Code Playgroud)
上面的代码找到至少MIN_SILENCE个连续元素小于SILENCE_THRESHOLD的部分.
现在,显然,上面的代码非常低效,并且滥用正则表达式.是否有其他方法更有效,但仍然会产生同样简单和短的代码?
我正在使用包含整数的大型列表,我想对它们进行一些模式匹配(比如查找某些序列).正则表达式将是最佳选择,除了它们似乎总是只处理字符列表,即字符串.是否有任何库(使用任何语言)可以处理任意类型的列表?
我知道我可以将我的整数列表转换为字符串,然后进行正常的正则表达式搜索,但这似乎有点浪费和不优雅.
编辑:
我的要求很简单.不需要嵌套列表,不需要花哨的字符类.基本上我只对可能变得非常复杂的序列的出现感兴趣.(例如像"[abc]{3,}.([ab]?[^a]{4,7})"
等,其中a
,b
,c
是整数).这应该可以概括为可以检查相等的任何类型.对于一个可枚举的类型,你也可以得到像"[a-z]"
工作一样的东西.
我有一个包含以下格式的数据的文件:
0.0 x1
0.1 x2
0.2 x3
0.0 x4
0.1 x5
0.2 x6
0.3 x7
...
Run Code Online (Sandbox Code Playgroud)
数据由多个数据集组成,每个数据集在第一列中以0开头(因此x1,x2,x3将是一组,x4,x5,x6,x7是另一组).我需要分别绘制每个数据集,所以我需要以某种方式分割数据.最简单的方法是什么?
我意识到每次在第一列遇到0时我都可以逐行检索数据并分割数据,但这似乎非常低效.
考虑以下(破碎)代码:
import functools
class Foo(object):
def __init__(self):
def f(a,self,b):
print a+b
self.g = functools.partial(f,1)
x=Foo()
x.g(2)
Run Code Online (Sandbox Code Playgroud)
我想要做的是获取函数f并部分应用它,从而产生一个函数g(self,b)
.我想使用此函数作为方法,但这目前不起作用,而是我得到错误
Traceback (most recent call last):
File "test.py", line 8, in <module>
x.g(2)
TypeError: f() takes exactly 3 arguments (2 given)
Run Code Online (Sandbox Code Playgroud)
x.g(x,2)
然而,这样做是有效的,所以似乎问题是g被认为是"正常"函数而不是类的方法.有没有办法让xg表现得像一个方法(即隐式传递self参数)而不是函数?
我有一大堆矩形,大小都相同.我正在生成不应该落在这些矩形中的随机点,所以我想做的是测试生成的点是否位于其中一个矩形中,如果是,则生成一个新点.
使用R-tree似乎可行,但它们实际上是用于矩形而不是点.我可以使用R-tree算法的修改版本,它也适用于点,但如果已经有一些更好的解决方案,我宁愿不重新发明轮子.我对数据结构不是很熟悉,所以也许已经存在一些适用于我的问题的结构?
总之,基本上我要问的是,如果有人知道一个好的算法,在Python中工作,可以用来检查一个点是否位于给定矩形集中的任何矩形.
编辑:这是2D,矩形不旋转.
我有一个对象应该通过发出一个以新值作为参数的信号来表示值已经改变.值的类型可以改变,因此我不确定如何写入信号类型.我知道我可以使用这样的旧式信号来解释这个:
self.emit(SIGNAL("valueChanged(PyQt_PyObject)"), newvalue)
Run Code Online (Sandbox Code Playgroud)
但是我怎么用新式信号写这个呢?