小编Nic*_*ing的帖子

如何在python OrderedDict上使用字符串键而不是整数进行切片?

由于OrderedDict具有列表(具有有序元素)和字典(使用键而不是索引)的特征,因此使用键切片似乎很自然.

>>> from collections import OrderedDict
>>> cities = OrderedDict((('san francisco', 650), ('new york', 212), ('shanghai', 8621), ('barcelona', 42423)))
>>> test['shanghai':]  # I want all the cities from shanghai to the end of the list
TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)

有趣的是,由于OrderedDictionary.__getslice__没有实施,这不是你看到的错误.我尝试添加自己的__getslice__方法OrderedDict,但我一直遇到这个TypeError问题.似乎Python正在进行某种类型检查以强制切片键只是整数,在它们传递给__getslice__函数之前,是多少unpythonic!

>>> class BetterOrderedDict(OrderedDict):
        def __getslice__(self, start=None, end=None, step=1):
            return 'potato'

>>> test = BetterOrderedDict((('one', 1), ('two', 2), ('three', 3), ('four', 4)))
>>> print test[1:4]
'potato'                           # ok this makes sense so …
Run Code Online (Sandbox Code Playgroud)

python dictionary ordereddictionary python-2.7 python-internals

21
推荐指数
2
解决办法
1499
查看次数

Python中用"x或y中的x:"做什么?

我正在试图拆开并去除这个产生这个标题的python代码:

_                                      =   (
                                        255,
                                      lambda
                               V       ,B,c
                             :c   and Y(V*V+B,B,  c
                               -1)if(abs(V)<6)else
               (              2+c-4*abs(V)**-0.4)/i
                 )  ;v,      x=1500,1000;C=range(v*x
                  );import  struct;P=struct.pack;M,\
            j  ='<QIIHHHH',open('M.bmp','wb').write
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
            i  ,Y=_;j(P('BBB',*(lambda T:(T*80+T**9
                  *i-950*T  **99,T*70-880*T**18+701*
                 T  **9     ,T*i**(1-T**45*2)))(sum(
               [              Y(0,(A%3/3.+X%v+(X/v+
                               A/3/3.-x/2)/1j)*2.5
                             /x   -2.7,i)**2 for  \
                               A       in C
                                      [:9]])
                                        /9)
                                       )   )
Run Code Online (Sandbox Code Playgroud)

来源:http://preshing.com/20110926/high-resolution-mandelbrot-in-obfuscated-python/
我发现了一个有趣的扭曲的for循环,我不确定它是否只是混淆的一部分,或者如果它实际上有一个功能.中间线:
for X in j('BM'+P(M,v*x*3+26,26,12,v,x,1,24))or C:
最后做什么或做什么?

为清楚起见,我重新编写了如下代码:

import struct

image_name = "M.bmp"
mandlebrot = lambda V,B,c :c and Y(V*V+B,B,c-1) if(abs(V)<6) else (2+c-4*abs(V)**-0.4)/i
y,x = 600,800
pixelrange …
Run Code Online (Sandbox Code Playgroud)

python obfuscation for-loop fractals deobfuscation

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

是否有命令行界面列出mac上范围内的所有蓝牙设备?

我想列出所有范围内的蓝牙设备,理想情况下是主机名,但MAC地址就足够了.我需要一个执行主动扫描的命令,以便我可以查看我的设备是否在附近,而不是列出以前配对设备的设备.

我的用例是检测我的蓝牙耳机或iPhone是否在我的Mac范围内,以触发安全设置更改(例如sudo超时).我已经做了很多谷歌搜索,我似乎能找到的唯一的东西是iOS快速代码示例.我很满意OS X Swift代码示例,AppleScript,终端实用程序或指向优秀文档的指针.

到目前为止我已经看过这些选项了:

  • blued:打印一个mac地址列表,但是当设备进入或超出范围或连接时它们似乎没有改变,并且它们与主机名不匹配
  • blueutil(brew install blueutil):仅打印电源状态,而不是设备名称
  • bluetoothaudiod:没有可用的界面
  • 这个Objective-C代码在XCode中创建一个基于终端的蓝牙监视器?:编译时我遇到了几个错误,所以很难对它进行测试
  • 使用AppleScript将其读出Bluetooth Explorer.appGUI
  • 使用dtrace来看看如何Bluetooth Explorer.app计算列表:困难不得已而为之
  • 来自此论坛帖子Proximity App :没有命令行界面,所以我无法远程查询它.我可以编写一个脚本,将状态存储在一个文件中以便稍后阅读,但它一次只适用于一个设备.

编辑2017/01:找到这个SO答案,详细介绍如何在Swift中查找附近的设备:列出 Swift
中蓝牙设备范围内的设备

编辑2017/10:找到Swift 3和4.0的更新SO答案:使用Swift 3.0附近的蓝牙设备

macos applescript bluetooth objective-c swift

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

如何使用Selenium和Python将DELETE键击发送到文本字段?

如何使用Selenium Web测试仪将Keys.DELETE击键发送到文本字段?我正在尝试模拟用户键入字段,然后删除他们键入的内容以测试交互式自动提供功能.它应该将列表过滤到以查询开头的项目,然后在删除查询时再次显示所有可能的建议.发送.clear()的Unfortunatley无法再次取消筛选列表.send_keys('\ 127')也没有.

def get_suggestions():
    driver.get('https://www.example.com/')
    driver.find_element_by_css_selector('#searchQuery').click()
    driver.find_element_by_css_selector('#searchQuery').send_keys('a')
    sleep(0.5)
    driver.find_element_by_css_selector('#searchQuery').send_keys(Keys.DELETE)
    sleep(0.5)
    for suggestion in driver.find_elements_by_css_selector('#search-form #suggestions'):
        yield suggestion
Run Code Online (Sandbox Code Playgroud)

如何模拟用户按下键盘上的删除按钮?

python selenium selenium-webdriver

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

当编译器从代码中获取所有空格和注释时,GCC如何知道错误是什么?

我确信这也适用于其他编译器,但我只使用GCC.如果编译器通过删除非代码(注释,空格等)的无关内容来优化代码,它如何正确显示原始文件中的错误行?它是否仅在检查错误后优化代码?或者它以某种方式插入标签,以便如果发现错误,它知道它在哪一行?

mycode.cpp: In function ‘foo(int bar)’:
mycode.cpp:59: error: no matching function for call to ‘bla(int bar)’
Run Code Online (Sandbox Code Playgroud)

c++ compiler-errors g++

9
推荐指数
2
解决办法
1270
查看次数

为什么定义__eq__的参数类型会抛出MyPy类型错误?

我正在使用Python 3.5.1和新发布的MyPy v0.4.1静态类型分析器.

我有一些更复杂的代码,我已经减少到重现错误所需的最简单的python类:

class MyObject(object):
    def __init__(self, value: int=5) -> None:
        self.value = value

    def __eq__(self, other: MyObject) -> bool:
        return self.value == other.value
Run Code Online (Sandbox Code Playgroud)

运行类型检查器mypy test.py会产生以下错误:

test.py: note: In class "MyObject":
test.py:5: error: Argument 1 of "__eq__" incompatible with supertype "object"
Run Code Online (Sandbox Code Playgroud)

我的基础上的理论,这些文档__eq____ne__对象上已经定义的类型,这是与这些类型的我子类的重新定义冲突.我的问题是如何定义这些类型以确保__eq__使用我选择的类型进行类型检查.

python types typechecking python-3.x mypy

9
推荐指数
2
解决办法
1379
查看次数

使用 sudo in fish 运行最后一个命令仅在没有参数时才有效?

我正在尝试编写一个sudo !!与 Bash等效的函数。它有效,但仅当最后一个命令没有参数时。

到目前为止的功能是:

function s --description "Run last command (or specified command) using sudo"
    if test $argv
        switch $argv[1]
            case '!!'
                command sudo (echo $history[1])
            case '*'
                command sudo $argv
        end
    else
        command sudo fish
    end
end
Run Code Online (Sandbox Code Playgroud)

测试相关行:

$ command sudo whoami
root
$ whoami
nick
$ command sudo (echo $history[1])
root
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,现在让我们尝试一个带有几个参数的命令:

$ echo hi >> /etc/motd
An error occurred while redirecting file '/etc/motd'
open: Permission denied
$ command sudo (echo $history[1])
sudo: echo hi >> …
Run Code Online (Sandbox Code Playgroud)

fish

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

使用 awk 连接单个 .txt 文件中的 2 列并用“:”分隔?

我有大约 4000 万行制表符分隔的 .txt 文件,其中包含以下列:

1   rs58108123  10583
1   rs58108140  10611
1   rs58123442  13302
...
Run Code Online (Sandbox Code Playgroud)

我需要在第 1 列位置将第 1 列和第 3 列合并为一列。这是所需的输出:

1:10583 rs58108123
1:10611 rs58108140
1:13302 rs58123442
...
Run Code Online (Sandbox Code Playgroud)

据我了解,这可以使用 awk 命令来完成。我对命令行非常陌生,因此我无法弄清楚完成此任务所需的规范。如果您能提供任何可能的解决方案的解释,我们将不胜感激!

非常感谢!!

bash awk

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