小编Dsc*_*oni的帖子

如何在执行结束时自动删除脚本?

是否有可能制作一个python脚本,在Windows中执行(自删除)时删除.py文件?

python windows self-destruction

14
推荐指数
4
解决办法
1万
查看次数

我怎样才能生成类似numpy的文档?

我正在使用spyder和对象检查器进行大量工作,我发现这是一个非常方便的即时帮助功能.一些模块似乎从这个功能中获益非常好.例如,一个非常基本的numpy函数(numpy.absolute)在对象检查器中生成以下视图:

在对象检查器中查看numpy.absolute函数

我想知道,我怎么能用这样的方式编写自己的模块,当我在spyder中调用我的函数时会产生这样一个很好的视图.

python documentation numpy docstring spyder

13
推荐指数
2
解决办法
5455
查看次数

更新conda会导致降级和取代软件包

每次我想执行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 anaconda conda

12
推荐指数
0
解决办法
434
查看次数

如何在多处理中捕获工作程序中的异常

我正在使用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)

有没有办法向我展示工作线程中发生的所有异常而无需手动提升我自己的?

python multiprocessing python-2.7

9
推荐指数
1
解决办法
8633
查看次数

在划分数组时numpy中出现意外行为

因此,在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版本?

python arrays numpy division

8
推荐指数
1
解决办法
288
查看次数

在循环期间更改可迭代变量

让我们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')被抛出.

python for-loop

6
推荐指数
2
解决办法
1066
查看次数

python decorate函数调用

我最近了解了装饰器,并想知道是否可以在函数定义中使用它们,而不是在函数调用中,作为某种通用包装器.

原因是,我想通过用户定义的接口从模块调用函数,该接口对函数执行可重复的操作,并且我不想为每个函数实现包装器.

原则上我想有类似的东西

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)

是更好的选择?

python decorator wrapper

6
推荐指数
2
解决办法
5497
查看次数

OpenCL/C pow(x,0.5)!= sqrt(x)

我想我在一些非常奇怪的边界情况下,可能有双精度问题,我想知道,发生了什么.

在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)

c opencl pyopencl

6
推荐指数
1
解决办法
1509
查看次数

使用 psycopg2 编写动态 SQL 字符串

psycopg2在 python (2.7.10) 中使用连接到 postgresql 数据库。文档对动态 SQL 语句的组成非常清楚:

从不,从不,永远不要使用 Python 字符串连接 (+) 或字符串参数插值 (%) 将变量传递给 SQL 查询字符串。甚至不是在枪口下。

psycopg22.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)

python postgresql sql-injection psycopg2

6
推荐指数
1
解决办法
7456
查看次数

python可以从C头文件加载定义吗?

我正在围绕 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. 这可能吗?

python ctypes header-files

6
推荐指数
2
解决办法
1045
查看次数