javascript

java

python

c#

android

node.js

c++

reactjs

php

html

jquery

css

.net

ios

git

ruby-on-rails

sql

c

string

ruby

如何在Python 3中使用前导零填充字符串

这个问题已经在这里有了答案:

  • 将零填充到字符串的最佳方法14个答案

我正在尝试在Python 3中制作length = 001,但是每当我尝试打印出来时,它都会截断没有前导零的值(length = 1)。 在打印出来之前不必将length转换为字符串,如何停止这种情况?

trans by 2020-02-29T15:30:31Z

C ++-使用opencv编写鲁棒的(颜色和尺寸不变)圆检测(基于霍夫变换或其他功能)

我编写了以下非常简单的python代码以在图像中查找圆:

import cv
import numpy as np

WAITKEY_DELAY_MS = 10
STOP_KEY = 'q'

cv.NamedWindow("image - press 'q' to quit", cv.CV_WINDOW_AUTOSIZE);
cv.NamedWindow("post-process", cv.CV_WINDOW_AUTOSIZE);

key_pressed = False
while key_pressed != STOP_KEY:

    # grab image
    orig = cv.LoadImage('circles3.jpg')

    # create tmp images
    grey_scale = cv.CreateImage(cv.GetSize(orig), 8, 1)
    processed = cv.CreateImage(cv.GetSize(orig), 8, 1)


    cv.Smooth(orig, orig, cv.CV_GAUSSIAN, 3, 3)

    cv.CvtColor(orig, grey_scale, cv.CV_RGB2GRAY)

    # do some processing on the grey scale image
    cv.Erode(grey_scale, processed, None, 10)
    cv.Dilate(processed, processed, None, 10)
    cv.Canny(processed, processed, 5, 70, 3)
    cv.Smooth(processed, processed, cv.CV_GAUSSIAN, 15, 15)

    storage = cv.CreateMat(orig.width, 1, cv.CV_32FC3)

    # these parameters need to be adjusted for every single image
    HIGH = 50
    LOW = 140

    try: 
        # extract circles
        cv.HoughCircles(processed, storage, cv.CV_HOUGH_GRADIENT, 2, 32.0, HIGH, LOW)

        for i in range(0, len(np.asarray(storage))):
            print "circle #%d" %i
            Radius = int(np.asarray(storage)[i][0][2])
            x = int(np.asarray(storage)[i][0][0])
            y = int(np.asarray(storage)[i][0][1])
            center = (x, y)

            # green dot on center and red circle around
            cv.Circle(orig, center, 1, cv.CV_RGB(0, 255, 0), -1, 8, 0)
            cv.Circle(orig, center, Radius, cv.CV_RGB(255, 0, 0), 3, 8, 0)

            cv.Circle(processed, center, 1, cv.CV_RGB(0, 255, 0), -1, 8, 0)
            cv.Circle(processed, center, Radius, cv.CV_RGB(255, 0, 0), 3, 8, 0)

    except:
        print "nothing found"
        pass

    # show images
    cv.ShowImage("image - press 'q' to quit", orig)
    cv.ShowImage("post-process", processed)

    cv_key = cv.WaitKey(WAITKEY_DELAY_MS)
    key_pressed = chr(cv_key & 255)

从下面的两个示例中可以看出,“寻圆质量”变化很大:

情况1:

input1 detection1 post-processed1

案例2:

input2 detection2 post-processed2

Case1和Case2基本是同一张图片,但是算法仍然可以检测到不同的圆圈。 如果我向算法显示大小不同的圆圈的图像,则圆圈检测甚至可能完全失败。 这主要是由于HIGHLOW参数需要针对每个新图片分别进行调整。

因此,我的问题是:使该算法更强大的各种可能性是什么? 它应该是大小和颜色不变的,以便检测到具有不同颜色和大小的不同圆圈。 也许使用霍夫变换不是做事的最佳方法? 有更好的方法吗?

trans by 2020-02-29T14:27:08Z

python-在类定义之外定义方法?

class MyClass:
    def myFunc(self):
        pass

是否可以在类定义之外甚至在另一个模块中创建MyFunc()

trans by 2020-02-29T13:47:23Z

python-Django:在由.get()检索的单个模型实例上调用.update()?

我有一个当前调用Models.object.get()的函数,该函数返回0或1个模型对象。 如果返回0,则在该函数的2768791283866066010625子句中创建一个新的模型实例。 否则,我想在不创建新实例的情况下更新现有实例中的字段。 我最初试图在找到的实例上调用.update(),但是.update()似乎只能在QuerySet上调用。 我如何绕过十几个字段而不调用.filter()并比较长度来知道是否必须创建或更新现有实例?

trans by 2020-02-29T10:02:07Z

c-跟踪分段fau的python

我正在从python ad开发C扩展,我得到了一些段错误(在开发过程中不可避免...)。

我正在寻找一种方法来显示段错误发生在哪一行代码(一个想法就像跟踪每一行代码),我该怎么做?

trans by 2020-02-29T09:46:47Z

蟒蛇-范围与典型的步骤

这个问题已经在这里有了答案:

  • 如何使用十进制range()步长值?                                     33个答案

该文档基本上说while必须与该实现完全相同(对于正数step):

def range(start, stop, step):
  x = start
  while True:
    if x >= stop: return
    yield x
    x += step

它还说它的参数必须是整数。 这是为什么? 如果step是浮点数,该定义不是也完全有效吗?

就我而言,我是。 需要一个while函数,该函数接受一个float类型作为其step参数。 Python中是否有任何工具,还是我需要实现自己的工具?


更具体地说:如何将这种C代码以一种不错的方式直接转换为Python(即,不仅通过while循环手动完成此操作):

for(float x = 0; x < 10; x += 0.5f) { /* ... */ }
trans by 2020-02-29T09:06:57Z

如何使用python复制文件以及目录结构/路径?

这个问题已经在这里有了答案:

  • 如何在Python中复制文件?                                     16个答案

首先要在这里提到的是python,这是我的新手。

现在我有一个文件位于:

a/long/long/path/to/file.py

我想复制到我的主目录,并创建一个新文件夹:

/home/myhome/new_folder

我的预期结果是:

/home/myhome/new_folder/a/long/long/path/to/file.py

有没有现成的图书馆可以做到这一点? 如果没有,我该如何实现?

trans by 2020-02-23T02:45:17Z

在派生类中调用super()时,我可以传入self .__ class__吗?

这个问题已经在这里有了答案:

  • 如何避免使用super()进行无限递归?                                     1个答案

我最近发现(通过StackOverflow)在我应该调用的基类中调用方法:

self.__class__

很好,可以。 但是,我发现自己在进行更改时经常在类之间进行复制和粘贴,而经常忘记将派生的类参数固定为super()函数。

我想避免必须记住要更改派生类参数。 我可以改用self.__class__作为super()函数的第一个参数吗?

它似乎可行,但是有充分的理由为什么我不应该这样做?

trans by 2020-02-23T02:42:31Z

实例化-如何在Python中使用属性创建内联对象?

用Javascript将是:

var newObject = { 'propertyName' : 'propertyValue' };

如何在Python中完成?

trans by 2020-02-23T00:27:39Z

为什么Python没有静态变量?

有一个问题问如何在python中模拟静态变量。

另外,在网上可以找到许多创建静态变量的解决方案。 (尽管我还没有看到我喜欢的一个。)

为什么Python不支持方法中的静态变量? 这被认为是非Python的,还是与Python的语法有关?

编辑:

我专门询问了为什么进行设计决策,但我没有提供任何代码示例,因为我想避免解释来模拟静态变量。

trans by 2020-02-22T23:28:07Z

python-从频繁更新的fi中读取

我目前正在Linux系统上以python编写程序。 目的是在发现特定字符串后读取日志文件并执行bash命令。 该日志文件正在由另一个程序不断写入。 我的问题是:

如果我使用open()方法打开文件,我的Python文件对象是否会随着其他程序写入实际文件而更新,还是我必须按一定的时间间隔重新打开文件?

谢谢

吉姆

更新:到目前为止,感谢您的回答。 我也许应该提到Java EE应用程序正在写入文件,所以我无法控制何时将数据写入文件。 我目前有一个程序,该程序每10秒重新打开一次文件,并尝试从上次读取到的文件中的字节位置进行读取。 目前,它只是打印出返回的字符串。 我希望不需要重新打开文件,但read命令将以某种方式可以访问Java应用程序写入文件的数据。

#!/usr/bin/python
import time

fileBytePos = 0
while True:
    inFile = open('./server.log','r')
    inFile.seek(fileBytePos)
    data = inFile.read()
    print data
    fileBytePos = inFile.tell()
    print fileBytePos
    inFile.close()
    time.sleep(10)

感谢您提供有关pyinotify和generators的技巧。 我将看看这些以获得更好的解决方案。

trans by 2020-02-22T23:20:03Z

从C ++程序调用python进行分发

我想从我的C ++程序中调用python脚本文件。

我不确定要分发给的人是否会安装python。

基本上,我正在寻找一个可以使用的具有Apache类似发行许可证的.lib文件。

trans by 2020-02-22T23:12:12Z

python-PyCharm中的虚假未使用导入语句?

在这种情况下:

不.朋友:

import A
# A is unused here

从.朋友:

from b import A
# A is used here

PyCharm在b.py中抱怨“导入A”是未使用的导入,而Optimize导入会删除它,从而破坏了c.py中的导入

我知道这些链接导入不是一个好习惯(尽管您可以使用它来实现Facade模块),但是是我还是PyCharm失败了?

trans by 2020-02-22T23:04:13Z

python-pandas groupby而不将按列分组变成索引

pandas groupby的默认行为是将group by列转换为index并将其从数据框的列列表中删除。 例如,说我有一个包含这些列的dataFrame

col1|col2|col3|col4

如果我以df['col2','col3']的方式应用groupby说

df.groupby(['col2','col3']).sum()

数据帧df在列列表中不再具有['col2','col3']。 它们将自动转换为结果数据帧的索引。

我的问题是如何对列执行groupby并将该列保留在数据框中?

trans by 2020-02-22T22:10:52Z

python-SQLite性能基准测试-为什么:memory:这么慢...只有磁盘速度的1.5倍?

为什么在sqlite中:memory:这么慢?

我一直在尝试查看通过使用内存中的sqlite与基于磁盘的sqlite是否可以获得任何性能改进。 基本上,我想以启动时间和内存为代价来获得非常快速的查询,这些查询在应用程序过程中不会对磁盘造成影响。

但是,以下基准测试仅能使我提高速度1.5倍。 在这里,我正在生成一百万行随机数据,并将其加载到同一表的基于磁盘和内存的版本中。 然后,我在两个数据库上运行随机查询,返回大小约为300k的集合。 我期望基于内存的版本会更快,但是如上所述,我的速度只有1.5倍。

我尝试了其他几种大小的数据库和查询集。 :memory:的优势似乎随着数据库中行数的增加而上升。 我不确定为什么优势如此之小,尽管我有一些假设:

  • 所使用的表不够大(行)不足以构成:内存:一个巨大的赢家
  • 更多的联接/表将使:memory:优势更加明显
  • 在连接或操作系统级别进行某种缓存,以便以某种方式可以访问以前的结果,从而破坏了基准
  • 我没有看到某种隐藏的磁盘访问(我还没有尝试过lsof,但是我确实关闭了PRAGMA的日志功能)

我在这里做错什么了吗? 为什么:memory:没有产生几乎即时的查询? 这是基准:

==> sqlite_memory_vs_disk_benchmark.py <==

#!/usr/bin/env python
"""Attempt to see whether :memory: offers significant performance benefits.

"""
import os
import time
import sqlite3
import numpy as np

def load_mat(conn,mat):
    c = conn.cursor()

    #Try to avoid hitting disk, trading safety for speed.
    #http://stackoverflow.com/questions/304393
    c.execute('PRAGMA temp_store=MEMORY;')
    c.execute('PRAGMA journal_mode=MEMORY;')

    # Make a demo table
    c.execute('create table if not exists demo (id1 int, id2 int, val real);')
    c.execute('create index id1_index on demo (id1);')
    c.execute('create index id2_index on demo (id2);')
    for row in mat:
        c.execute('insert into demo values(?,?,?);', (row[0],row[1],row[2]))
    conn.commit()

def querytime(conn,query):
    start = time.time()
    foo = conn.execute(query).fetchall()
    diff = time.time() - start
    return diff

#1) Build some fake data with 3 columns: int, int, float
nn   = 1000000 #numrows
cmax = 700    #num uniques in 1st col
gmax = 5000   #num uniques in 2nd col

mat = np.zeros((nn,3),dtype='object')
mat[:,0] = np.random.randint(0,cmax,nn)
mat[:,1] = np.random.randint(0,gmax,nn)
mat[:,2] = np.random.uniform(0,1,nn)

#2) Load it into both dbs & build indices
try: os.unlink('foo.sqlite')
except OSError: pass

conn_mem = sqlite3.connect(":memory:")
conn_disk = sqlite3.connect('foo.sqlite')
load_mat(conn_mem,mat)
load_mat(conn_disk,mat)
del mat

#3) Execute a series of random queries and see how long it takes each of these
numqs = 10
numqrows = 300000 #max number of ids of each kind
results = np.zeros((numqs,3))
for qq in range(numqs):
    qsize = np.random.randint(1,numqrows,1)
    id1a = np.sort(np.random.permutation(np.arange(cmax))[0:qsize]) #ensure uniqueness of ids queried
    id2a = np.sort(np.random.permutation(np.arange(gmax))[0:qsize])
    id1s = ','.join([str(xx) for xx in id1a])
    id2s = ','.join([str(xx) for xx in id2a])
    query = 'select * from demo where id1 in (%s) AND id2 in (%s);' % (id1s,id2s)

    results[qq,0] = round(querytime(conn_disk,query),4)
    results[qq,1] = round(querytime(conn_mem,query),4)
    results[qq,2] = int(qsize)

#4) Now look at the results
print "  disk | memory | qsize"
print "-----------------------"
for row in results:
    print "%.4f | %.4f | %d" % (row[0],row[1],row[2])

这是结果。 请注意,对于相当大范围的查询大小,磁盘占用的内存大约是内存的1.5倍。

[ramanujan:~]$python -OO sqlite_memory_vs_disk_clean.py
  disk | memory | qsize
-----------------------
9.0332 | 6.8100 | 12630
9.0905 | 6.6953 | 5894
9.0078 | 6.8384 | 17798
9.1179 | 6.7673 | 60850
9.0629 | 6.8355 | 94854
8.9688 | 6.8093 | 17940
9.0785 | 6.6993 | 58003
9.0309 | 6.8257 | 85663
9.1423 | 6.7411 | 66047
9.1814 | 6.9794 | 11345

RAM是否应该相对于磁盘而言几乎是即时的? 这是怎么了

编辑

这里有一些好的建议。

我想对我来说,主要的收获是**可能没有办法使:memory:绝对更快,但是有一种方法可以使磁盘访问相对较慢。 **

换句话说,基准测试足以衡量内存的实际性能,但不能衡量磁盘的实际性能(例如,由于cache_size编译指示太大或因为我没有写数据)。 我会弄乱那些参数,并在有机会时发布我的发现。

就是说,如果有人认为我可以从内存数据库中挤出更多的速度(除了提高我将要做的cache_size和default_cache_size之外),我全都可以...

trans by 2020-02-22T22:02:23Z

Python 3.x BaseHTTPServer或http.s

我正在尝试制作BaseHTTPServer程序。 我更喜欢使用Python 3.3或3.2。 我发现文档很难理解要导入的内容,但尝试将导入从以下位置更改:

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

至:

from http.server import BaseHTTPRequestHandler,HTTPServer

然后导入工作,程序启动并等待GET请求。 但是,当请求到达时会引发异常:

File "C:\Python33\lib\socket.py", line 317, in write return self._sock.send(b)
TypeError: 'str' does not support the buffer interface

问题:是否存在与Python3.x兼容的BaseHTTPServer或http.server版本,或者我做错了什么?

这是我尝试在Python 3.3和3.2中运行的“我的”程序:

#!/usr/bin/python
# from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer
from http.server import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8080

# This class will handle any incoming request from
# a browser 
class myHandler(BaseHTTPRequestHandler):

    # Handler for the GET requests
    def do_GET(self):
        print   ('Get request received')
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        # Send the html message
        self.wfile.write("Hello World !")
        return

try:
    # Create a web server and define the handler to manage the
    # incoming request
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    print ('Started httpserver on port ' , PORT_NUMBER)

    # Wait forever for incoming http requests
    server.serve_forever()

except KeyboardInterrupt:
    print ('^C received, shutting down the web server')
    server.socket.close()

该程序部分在Python2.7中工作,但在2-8次请求后给出此异常:

error: [Errno 10054] An existing connection was forcibly closed by the remote host
trans by 2020-02-22T21:32:11Z

从Python中的数字获取信号名称

是否可以将信号编号(例如signal.SIGINT)映射到其各自的名称(即“ SIGINT”)?

我希望能够在收到日志时在日志中打印信号的名称,但是我找不到从信号编号到Python中名称的映射,即:

import signal
def signal_handler(signum, frame):
    logging.debug("Received signal (%s)" % sig_names[signum])

signal.signal(signal.SIGINT, signal_handler)

对于某些字典sig_names,因此当进程接收到SIGINT时,将输出:

Received signal (SIGINT)
trans by 2020-02-22T19:19:20Z

我如何防止灯具与django post_save信号代码冲突?

在我的应用程序中,我想在新用户注册时在某些表中创建条目。 例如,我要创建一个用户个人资料,然后将参考他们的公司和一些其他记录。 我用post_save信号实现了这一点:

def callback_create_profile(sender, **kwargs):
    # check if we are creating a new User
    if kwargs.get('created', True):
        user = kwargs.get('instance')
        company = Company.objects.create(name="My Company")
        employee = Employee.objects.create(company=company, name_first=user.first_name, name_last=user.last_name)
        profile = UserProfile.objects.create(user=user, employee=employee, partner=partner)
# Register the callback
post_save.connect(callback_create_profile, sender=User, dispatch_uid="core.models")

运行时效果很好。 我可以使用admin创建一个新用户,其他三个表也可以获取有意义的条目。 (除非是雇员,因为保存时未在管理员表单中填写user.first_name和user.last_name。我仍然不明白为什么要这样做)

问题出在我运行测试套件时。 在此之前,我创建了一堆夹具以在表中创建这些条目。 现在我得到一个错误,指出:

IntegrityError: duplicate key value violates unique constraint "core_userprofile_user_id_key"

我认为这是因为我已经在设备中创建了ID为“ 1”的公司,员工和档案记录,现在post_save信号正在尝试重新创建它。

我的问题是:运行灯具时可以禁用此post_save信号吗? 我可以检测到我正在作为测试套件的一部分运行,而不创建这些记录吗? 我现在应该从固定装置中删除这些记录吗(尽管信号仅设置默认值,而不是我要测试的值)? 夹具加载代码为什么不仅仅覆盖创建的记录?

人们如何做到这一点?

trans by 2020-02-22T19:01:11Z

python-使用PyYAML保存/转储带有注释的YAML文件

我有一个yaml文件,看起来像这样:

# The following key opens a door
key: value

有什么办法可以在维护评论的同时loaddump此数据吗?

trans by 2020-02-22T18:54:07Z

如何在python中处理管道破损(SIGPIPE)?

我用python编写了一个简单的多线程游戏服务器,该服务器为每个客户端连接创建了一个新线程。 我发现每时每刻,服务器都会由于管道中断/ SIGPIPE错误而崩溃。 我很确定程序尝试将响应发送回不再存在的客户端时会发生这种情况。

有什么好办法解决这个问题? 我的首选解决方案是简单地关闭与客户端的服务器端连接并继续,而不是退出整个程序。

PS:此问题/解答以通用方式处理该问题; 我应该如何具体解决呢?

trans by 2020-02-22T18:42:27Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 下一页 共349页