是否有可能制作一个python脚本,在Windows中执行(自删除)时删除.py文件?
我正在使用spyder和对象检查器进行大量工作,我发现这是一个非常方便的即时帮助功能.一些模块似乎从这个功能中获益非常好.例如,一个非常基本的numpy函数(numpy.absolute)在对象检查器中生成以下视图:
我想知道,我怎么能用这样的方式编写自己的模块,当我在spyder中调用我的函数时会产生这样一个很好的视图.
每次我想执行conda update conda
以下操作:
The following packages will be UPDATED:
cryptography 2.4.2-py27hc64555f_0 --> 2.6.1-py27hcfb25f9_0
openssl 1.0.2r-h0c8e037_0 --> 1.1.1b-h0c8e037_1
The following packages will be SUPERSEDED by a higher-priority channel:
jpeg pkgs/main::jpeg-9b-ha175dff_2 --> pkgs/free::jpeg-8d-vc9_2
libtiff pkgs/main::libtiff-4.0.10-h1c3b264_2 --> pkgs/free::libtiff-4.0.6-vc9_2
pyqt pkgs/main::pyqt-5.6.0-py27h6e61f57_6 --> pkgs/free::pyqt-4.10.4-py27_1
qt pkgs/main::qt-5.6.2-vc9hc26998b_12 --> pkgs/free::qt-4.8.7-vc9_6
The following packages will be DOWNGRADED:
spyder 3.3.4-py27_0 --> 3.2.8-py27_0
Run Code Online (Sandbox Code Playgroud)
完成更新后,我可以运行conda update --all
,再次更新已被取代并因此降级的版本。我能以某种方式规避该问题并直接执行a conda update conda
,而不必再执行更新操作,而将更新版本留给我conda update --all
吗?
编辑:
输出conda config --show default_channels
:
default_channels:
- https://repo.anaconda.com/pkgs/main
- https://repo.anaconda.com/pkgs/free …
Run Code Online (Sandbox Code Playgroud) 我正在使用Python(2.7.3)中的多处理模块,并希望调试我的工作人员正在进行的一些事情.但是,我似乎无法捕获工作线程中的任何异常.
一个最小的例子:
import multiprocessing as mp
a=[1]
def worker():
print a[2]
def pool():
pool = mp.Pool(processes=1)
pool.apply_async(worker, args = ())
pool.close()
pool.join()
print "Multiprocessing done!"
if __name__ == '__main__':
pool()
Run Code Online (Sandbox Code Playgroud)
这预计会引发一个IndexError,但我的输出只是
Multiprocessing done!
Run Code Online (Sandbox Code Playgroud)
有没有办法向我展示工作线程中发生的所有异常而无需手动提升我自己的?
因此,在numpy 1.8.2(使用python 2.7.6)中,阵列分割似乎存在问题.当使用其自身的一部分执行足够大的数组(至少8192个元素,多于一个维度,数据类型无关)的就地划分时,对于不同的符号,行为是不一致的.
import numpy as np
arr = np.random.rand(2, 5000)
arr_copy = arr.copy()
arr_copy = arr_copy / arr_copy[0]
arr /= arr[0]
print np.sum(arr != arr_copy), arr.size - np.sum(np.isclose(arr, arr_copy))
Run Code Online (Sandbox Code Playgroud)
输出预计为0,因为两个分区应该是一致的,但它是1808.这是一个错误吗?是否也发生在其他numpy版本?
让我们it
成为python中的可迭代元素.在什么情况下,it
一个循环内部的变化it
反射?或者更直接:这样的事情什么时候起作用?
it = range(6)
for i in it:
it.remove(i+1)
print i
Run Code Online (Sandbox Code Playgroud)
导致打印0,2,4(显示循环运行3次).
另一方面呢
it = range(6)
for i in it:
it = it[:-2]
print it
Run Code Online (Sandbox Code Playgroud)
导致输出:
[0,1,2,3]
[0,1]
[]
[]
[]
[],
Run Code Online (Sandbox Code Playgroud)
显示循环运行6次.我想这与就地操作或可变范围有关,但不能100%肯定地绕过它.
Clearification:
一个例子,不起作用:
it = range(6)
for i in it:
it = it.remove(i+1)
print it
Run Code Online (Sandbox Code Playgroud)
导致'None'被打印并且Error(NoneType没有属性'remove')被抛出.
我最近了解了装饰器,并想知道是否可以在函数定义中使用它们,而不是在函数调用中,作为某种通用包装器.
原因是,我想通过用户定义的接口从模块调用函数,该接口对函数执行可重复的操作,并且我不想为每个函数实现包装器.
原则上我想有类似的东西
def a(num):
return num
@double
a(2)
Run Code Online (Sandbox Code Playgroud)
返回4而无需访问实现a
.或者在这种情况下是一个全局包装器
def mutiply(factor,function,*args,**kwargs):
return factor*function(*args,*kwargs)
Run Code Online (Sandbox Code Playgroud)
是更好的选择?
我想我在一些非常奇怪的边界情况下,可能有双精度问题,我想知道,发生了什么.
在OpenCL内核中我使用:
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
__private int k = 2; // I need k to be an int, because I want to use as a counter
__private double s = 18;
__private double a = 1;
a = a/(double)k; // just to show, that I make in-place typecasting of k
a = k+1;
k = (int)a; //to show that I store k in a double buffer in an intermediate-step
if ((k-1)==2)
{
// k = 3;
s …
Run Code Online (Sandbox Code Playgroud) 我psycopg2
在 python (2.7.10) 中使用连接到 postgresql 数据库。文档对动态 SQL 语句的组成非常清楚:
从不,从不,永远不要使用 Python 字符串连接 (+) 或字符串参数插值 (%) 将变量传递给 SQL 查询字符串。甚至不是在枪口下。
在psycopg2
2.7 版中,有一个新sql
模块可以安全地防止 SQL 注入来执行此字符串组合。尽管如此,我还是不明白如何正确构建如下语句:
import psycopg2 as ps
C = psycopg.connect(host='my_host', port=Port, database='My_DB')
cur = C.cursor()
schema = 'some_schema'
table = 'some_table'
SQL = cur.execute("SELECT * FROM "+schema+"."+table+";") # This is horribly wrong
SQL = cur.execute("SELECT * FROM some_schema.some_table;") # That's what the result should be
Run Code Online (Sandbox Code Playgroud) 我正在围绕 C API 编写一个 python 包装器。我有一个广泛的 API 描述,现在我正在努力实现头文件中定义的枚举。
假设我内部有一个 C API 函数myAPI.dll
,它接受一个枚举作为参数,例如:
void SomeFunction(SomeEnum data)
Run Code Online (Sandbox Code Playgroud)
从头文件中,我可以看到SomeEnum
如下所示:
enum SomeEnum{
SomeValue = 1,
SomeOtherValue = 2,
SomeVeryStupidValue = -1
};
Run Code Online (Sandbox Code Playgroud)
在 python 中,我加载.dll
类似:
myAPI = ctypes.cdll.LoadLibrary('myAPI.dll')
Run Code Online (Sandbox Code Playgroud)
现在我希望能够调用:
myAPI.SomeFunction(SomeValue)
Run Code Online (Sandbox Code Playgroud)
我知道,我可以SomeValue
在 python 中定义,但是直接从头文件加载它的定义或者直接将它作为myAPI
. 这可能吗?