小编shx*_*hx2的帖子

如何与运行Python脚本进行交互

我的主脚本正在运行

class Blah():
    update=0

    def testthings(function):
        return function(9)

main = Blah()
while True:
    main.update+=1
Run Code Online (Sandbox Code Playgroud)

在主脚本运行时,如何运行独立脚本以访问"主变量"(在我的主脚本中定义)?

像这样的东西会很有用

main = GetMain()
while True:
    main.testthings(lambda x: x)
Run Code Online (Sandbox Code Playgroud)

python interprocess inter-process-communicat

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

使用Sikuli验证文本

我正在使用Sikuli IDE来测试在文本框中返回数据的应用程序.例如,我在名称字段中搜索我的测试值'FirstName01',应用程序在各种文本框中返回名称和地址.

然后我使用Sikuli中的exists()函数验证数据.为此,我单击IDE左上角的exists函数,然后使用+工具选择我要验证的文本.在这种情况下,FirstName01和Location01.然后我将MatchingPreview选项卡上的Similarity设置设置为.98(我发现如果我将其设置为1.0,即使我得到正确的数据,Sikuli仍然无法通过测试).

如果我运行测试搜索FirstName01,我得到正确的结果,Sikuli不会抛出错误.我的问题是,如果我搜索并返回FirstName02,试图生成错误条件,即使找到FirstName01,存在的函数也会传递它.似乎Sikuli没有验证数据的最后一个字符.它似乎验证了其他字符,因为如果我搜索FirstName21,则exists函数会抛出错误.有没有人遇到这个问题,如果是这样,你是如何解决它的?

我的代码如下

If exists(FirstName01):
   popup('passed')
else:
   popup('failed')
Run Code Online (Sandbox Code Playgroud)

还有另一种验证数据的方法吗?

python sikuli

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

相当于Python生成器的`return`

有时,当重写递归函数作为生成器时,我会想到它的简洁性return.

"""
Returns a list of all length n strings that can be made out of a's and/or b's.
"""
def ab_star(n):
    if n == 0:
        return [""]

    results = []
    for s in ab_star(n - 1):
        results.append("a" + s)
        results.append("b" + s)

    return results
Run Code Online (Sandbox Code Playgroud)

变成

"""
Generator for all length n strings that can be made out of a's and/or b's.
"""
def ab_star(n):
    if n == 0:
        yield ""

    else:
        for s in ab_star(n - 1): …
Run Code Online (Sandbox Code Playgroud)

python coding-style yield generator

3
推荐指数
2
解决办法
1249
查看次数

如何在python中检查mongo ObjectID是否有效?

我想验证objectID是否是有效的mongoID字符串.

目前我有:

import bson
try:
  bson.objectid.ObjectId(id)
except:
  pass # do something
Run Code Online (Sandbox Code Playgroud)

我想让我的异常更具体,看起来有一个解决方案,但except bson.objectid.InvalidId最终还是有TypeError: id must be an instance of (str, unicode, ObjectId).

好的,我试图进一步查看并发现is_valid方法bson.is_valid(1)导致另一个错误TypeError: BSON data must be an instance of a subclass of str.

那么如何正确检查我的objectID是否有效?

python mongodb bson pymongo objectid

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

Python多重赋值和引用

为什么多个赋值对int有明确的引用,而不是列表或其他对象?

>>> a = b = 1
>>> a += 1
>>> a is b
>>>     False
>>> a = b = [1]
>>> a.append(1)
>>> a is b
>>>     True
Run Code Online (Sandbox Code Playgroud)

python list variable-assignment

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

以 O(nk) 的时间复杂度合并 k 个大小为 n 的排序数组

最近在一次采访中我被问到这个问题:

以最小的时间复杂度将k 个排序的数组合并到一个大小为 n k 的数组中,每个数组都有 n 个元素。*

我给出了一个使用大小为 k 的 minheap 来找到 k 列表顶部元素的最小值的解决方案。

这样,时间复杂度将下降到 - O(nklogk)。

但他并不信服。他想要一个时间复杂度为 O(nk) 的解决方案。

我在互联网上搜索过,但找不到解决方案。

sorting algorithm heap merge data-structures

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

使用另一个列表在Python列表中对字符串进

说我有以下列表:

List1=['Name1','Name3','Color1','Size2','Color3','Color2','Name2','Size1', 'ID']
List2=['ID','Color1','Color2','Size1','Size2','Name1','Name2']
Run Code Online (Sandbox Code Playgroud)

每个列表将具有名为"ID"变量的元素,然后是3个其他类别(名称,颜色和大小),其中每个类别中具有未确定数量的元素.

我想对这些变量进行排序,而不知道每个类别中将包含以下"排序列表"的数量:

SortList=['ID','Name','Size','Color']
Run Code Online (Sandbox Code Playgroud)

我可以得到所需的输出(见下文),虽然我想有更好/更pythonic的方式这样做.

>>> def SortMyList(MyList,SortList):       
...     SortedList=[]       
...     for SortItem in SortList:
...         SortItemList=[]
...         for Item in MyList:
...             ItemWithoutNum="".join([char for char in Item if char.isalpha()])  
...             if SortItem==ItemWithoutNum:
...                 SortItemList.append(Item)
...         if len(SortItemList)>1:
...             SortItemList=[SortItem+str(I) for I in range(1,len(SortItemList)+1)]
...         for SortedItem in SortItemList:
...             SortedList.append(SortedItem)
...     return SortedList
... 
>>> 
>>> SortMyList(List1, SortList)
['ID', 'Name1', 'Name2', 'Name3', 'Size1', 'Size2', 'Color1', 'Color2', 'Color3']
>>> SortMyList(List2, SortList)
['ID', 'Name1', 'Name2', 'Size1', 'Size2', 'Color1', …
Run Code Online (Sandbox Code Playgroud)

python sorting secondary-sort

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

对GIL进行性能分析

有没有一种方法来分析python进程对GIL的使用?基本上,我想找出持有GIL的时间百分比。该进程是单线程的。

我的动机是我有一些用Cython编写的代码,使用nogil。理想情况下,我想在多线程进程中运行它,但是为了知道这是否可能是一个好主意,我需要知道GIL是否有大量时间空闲。


我从8年前就发现了这个相关问题。唯一的答案是“否”。希望此后一切都变了。

python multithreading profiling cython gil

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

Python raw_input搞乱字符串连接

我正在尝试在Python中做一些相对简单的事情,我很惊讶这对于它应该是多么简单而言并不起作用.

我在这里只是想连接三个简单的字符串.输入raw_input的输入在"abc"以下所有情况下:

proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1' + proj + 'test2'
print ProjRegex
Run Code Online (Sandbox Code Playgroud)

产量:

abc
test2abc
Run Code Online (Sandbox Code Playgroud)

案例2

proj = raw_input("Name of project: ")
print proj
ProjRegex = 'test1%stest2' % (proj)
print ProjRegex
Run Code Online (Sandbox Code Playgroud)

产量:

abc
test2abc
Run Code Online (Sandbox Code Playgroud)

请注意,在两种情况下,不是"test1abctest2"按预期打印,而是将test2替换为test1.

然后我注意到如果我没有使用raw_input,如果我说:

proj = "abc"
ProjRegex = 'test1' + proj + 'test2'
Run Code Online (Sandbox Code Playgroud)

然后它表现得像预期的那样.

那么发生的事情raw_input()是想要进行字符串替换吗?我的理解是它需要键盘输入,剥离换行符,并以字符串形式返回.

python windows string concatenation raw-input

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

如何将元组中的一些项从列表转换为浮点数?

由于我之前在我的脚本中做了一些切片,我最终得到了一个巨大的元组,如下所示:

(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, [102.37], [129.6], [190.64], [181.98], [192.79])
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,前7个项目是浮点数,另一个是包含每个元素的列表,这些列表也是浮点数.

我想摆脱列表并保留浮点数,以便我可以将所有值相加以计算6个月期间的平均股票价格.

实现这一目标的最pythonic方法是什么?

python tuples list

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