小编Woo*_*ble的帖子

Python:了解对象__del__方法

任何人都可以形容我为什么这段代码会打印'2 1 0完成'而不是预期输出'0 1 2完成'?据我所知,我们在列表推导过程中创建了一些匿名变量,并且使用filo原理对列表理解无法结束进行垃圾收集.但是,它们仍然在列表aa中引用,不是吗?为什么第二个'del a' 在这种情况下不会调用del magic方法?

class A:
    def __init__(self, name):
        self.name = name
    def __del__(self):
        print self.name,

aa = [A(str(i)) for i in range(3)]
for a in aa:
    del a

print 'done'
Run Code Online (Sandbox Code Playgroud)

还有,高级问题.请查看http://codepad.org/niaUzGEy 为什么有5份副本,3份副本?这不是一份副本吗?为什么5或3?不知道,那就是为什么要问它;)谢谢你的时间!

python

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

遇到sql LIKE问题

我有以下查询:

SELECT * FROM `alerts` WHERE `title` LIKE `%template%` 
Run Code Online (Sandbox Code Playgroud)

这应该返回至少3个结果,标题包含"模板"一词,但我收到以下错误: -

1054 - 'where子句'中的未知列'%template%'

据我所知,它的语法正确并调用正确的列名.我错过了什么?

php mysql sql

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

打印字典并将其保存到文件中,然后将其复制到py文件中使用?

使用DB,我想创建一个非常大的字典.如果我将它保存到磁盘,当腌制时,它需要大约10 MB的空间.

我想做的是:

将此字典保存到磁盘,以打开该文本文档并将其复制到另一个py文件,以便每次每次通过Web应用程序调用py文档时都不必重新生成它,它是可迭代的.

我怎样才能做到这一点?

PS.我的应用程序正在Google应用引擎上运行,我想解决这个问题,以避免使用DB等资源.

python google-app-engine python-2.7 webapp2

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

Python简单字符串格式错误

这是我的脚本,它应该解析域(由每个分隔回报)的.txt文件的列表,它们分成单独的域名,发送请求到域名注册网站域名为,检查响应,看是否它是可用的,如果是,则将其写入新文件.所以我得到一个只有可用名称的列表.

问题?这很简单,我只是不太了解语言,我不知道如何以字符串格式获取域名,以便对whois站点的请求是这样的:

http://whois.domaintools.com/google.com

显然%s的东西不起作用.

码:

#!/usr/bin/python
import urllib2, urllib
print "Domain Name Availability Scanner."
print "Enter the Location of the txt file containing your list of domains:"
path = raw_input("-->")

wordfile = open(path, "r")
words = wordfile.read().split("n")
words = map(lambda x: x.rstrip(), words)
wordfile.close()

for word in words:
    req = urllib2.Request("http://whois.domaintools.com/%s") % (word)
    source = urllib2.urlopen(req).read()
    if "This domain name is not registered" in source:
    f = open("success.txt", "a")
    f.write("%s\n") % (word)
    f.close()
  break
Run Code Online (Sandbox Code Playgroud)

终端错误:

python domain.py
Domain Name Availability …
Run Code Online (Sandbox Code Playgroud)

python string

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

重用子流程对象

我有一个 Python 脚本,需要发出许多 shell 命令。我认为我可以创建一个子进程对象,然后在每次执行命令时重用它。

这就是我设置代码的方式:

def setupPipeline(self):
    setupShell = subprocess.Popen([''], stdout=subprocess.PIPE, shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE)

    # Stop running pipeline
    setupShell.stdin.write('stop ' + self.Name)
    output = setupShell.stdout.read()
    print output

    # Cancel any running jobs and cleanup variables
    setupShell.stdin.write('sudo -u pr cancel ALL')
    output = setupShell.stdout.read()
    print output

    setupShell.stdin.write('sudo -u pr clean ALL')
    output = setupShell.stdout.read()
    print output
Run Code Online (Sandbox Code Playgroud)

(这里跳过很多其他代码)

if __name__ == '__main__':
#self-test code
pipelineObj = Pipeline(sys.argv)
pipelineObj.setupPipeline()
Run Code Online (Sandbox Code Playgroud)

但是,当代码到达第二个命令时,我得到一个

IOError: [Errno 32] Broken pipe
Run Code Online (Sandbox Code Playgroud)

如何重用子进程对象来发出需要在同一 shell 中执行的命令?这些命令不能简单地链接在一起,因为每次调用之间都会进行处理。

python shell subprocess

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

'A'不是预期类型'REAL'

服务器下面的代码显示列表中的整数.

(defun isNum (N)
  (and (<= N 9) (>= N 0)))

(defun count-numbers (list)
  (let ((count 0))
    (dolist (item list count)
      (cond
       ((null list) nil)
       (((and (<= N 9) (>= N 0))) item)(incf count))
       (setq(0 + count))))))
Run Code Online (Sandbox Code Playgroud)

A' is not of the expected type运行命令时得到错误REAL'(count-numbers'(3 4 5 6 a 7 b))

lisp

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

在emacs中处理文本

我需要定义一个函数来读取Emacs中特定文档的所有内容并处理其中的文本.例如,我正在读取XML文件,我想搜索特定属性并计算出现次数.有人可以帮忙吗?

emacs

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

将大量数字乘以 random() (Python)

问题:生成大型二进制字符串(长度 2000+)。动作要快,因为该generateRandom()函数将在算法中被调用300,000次。

尝试的解决方案:生成 3 或 4 个二进制数并将它们全部附加在一起 ​​500 次。这太慢了。

对 random.random() 进行一次调用并将其乘以一个巨大的数字。转换为二进制一次即可完成。这适用于较小的数字,但由于二进制字符串必须具有一定的长度,因此要转换为二进制的数字必须非常巨大(2 ** len(binString))。

当前代码(适用于较小的数字):

binaryRepresentation = ''

binaryRepresentation += bin(int(random.random() * (2 ** binLength)))[2:].zfill(binLength)
Run Code Online (Sandbox Code Playgroud)

我需要帮助修复的错误:此调用会抛出一个“长整型太大,无法转换为浮点数”和大量数字。有没有办法使整个算法更高效或使这个大数字可以转换为浮点数?

谢谢你!

python optimization largenumber

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

如何正确迭代交叉点

我试图迭代一系列交叉点,其中每个迭代是一组新行的交集.我的代码看起来有点像下面这样:

    for liness in range(len(NNCatelogue)):
        for iii in [iii for iii, y in enumerate(NNCatelogue[iii]) if y in set(NNCatelogue[liness]).intersection(catid)]:
            print iii, y
Run Code Online (Sandbox Code Playgroud)

NNCatelogue本质上是一个1268 X 12矩阵,每个新的liness迭代都会调用一个新行.如果我只是输入我想要的行号(即:0,1,2 ......),那么我得到预期的输出(前面没有for循环).上面写的代码给出了以下输出:

    10 C-18-1064
    4 C-18-1122
    4 C-18-1122
    5 C-18-1122
    5 C-18-1122
    7 C-18-1122
    8 C-18-1122
    9 C-18-1122
    10 C-18-1122
    11 C-18-1122
    6 C-18-1122
    ...
Run Code Online (Sandbox Code Playgroud)

预期产量应为:

  0 C-18-1
  1 C-18-259
  2 C-18-303
  3 C-18-304
  4 C-18-309
  5 C-18-324
  6 C-18-335
  7 C-18-351
  8 C-18-372
  9 C-18-373
  10 C-18-518
  11 C-18-8
Run Code Online (Sandbox Code Playgroud)

知道我可能会出错吗?任何帮助是极大的赞赏!

更新:

我尝试了其中一个答案的变体,虽然它更接近我所期待的,但它并不完全存在.这是我尝试过的:

    counter = 0
    for …
Run Code Online (Sandbox Code Playgroud)

python loops set-intersection

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

C++析构函数实际上是否删除了东西?

我知道删除操作符以及它如何自动调用类的析构函数.但是,我最近看到有人直接调用了类的析构函数,这对我来说似乎很奇怪.所以我写了一个简短的程序,给出了一个非常不期望的结果:

#include <stdio.h>

class A
{
public:
  A()  {a = new int; *a=42; b=33;}
  ~A() {delete a;}

  int* a;
  int  b;
};

int main(int argc, const char ** argv)
{
  A* myA = new A();
  printf("a:%d  b:%d\n", *(myA->a), myA->b);
  myA->~A();
  printf("b:%d\n", myA->b);
  printf("a:%d\n", *(myA->a));
}
Run Code Online (Sandbox Code Playgroud)

所以如你所见,我正在调用析构函数~A(),所以我希望程序在第二次尝试访问变量'a'时会崩溃(因为它在2行之前被删除了).相反..程序只是打印出来没有任何投诉:

a:42  b:33
b:33
a:42
Run Code Online (Sandbox Code Playgroud)

......为什么?当我直接调用~A()时会发生什么?有什么情况可以这么做吗?

c++

1
推荐指数
2
解决办法
158
查看次数