小编boa*_*der的帖子

有没有办法控制pygame中的网络摄像头焦点?

我有两个网络摄像头,我想拍照.以下代码实现了:

import pygame
import pygame.camera
from datetime import datetime
import Image
import threading
import time

class Camera (threading.Thread):
    def __init__(self, camera):
        self.camera = pygame.camera.Camera(camera,(2304,1536))
        self.stop = False
        threading.Thread.__init__(self)

    def run(self):
        self.camera.start()
        srf = self.camera.get_image()
        img = pygame.image.tostring(srf, 'RGB')
        img = Image.fromstring('RGB', srf.get_size(), img)

        img.save('%s.png'%datetime.now(), 'PNG')

s = datetime.now()

pygame.init()
pygame.camera.init()

cam1 = Camera("/dev/video0")
cam2 = Camera("/dev/video1")

cam1.start()
cam2.start()

cam1.join()
cam2.join()

print datetime.now() - s
Run Code Online (Sandbox Code Playgroud)

但我需要设定焦点.

我找到了这些命令行:

apt-get install uvcdynctrl
uvcdynctrl --device=/dev/video1 --clist
uvcdynctrl --device=/dev/video1 --get='Focus, Auto'
uvcdynctrl --device=/dev/video1 --set='Focus, Auto' …
Run Code Online (Sandbox Code Playgroud)

python webcam pygame

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

如何避免获得''NoneType'对象在selenium quit()上没有属性'path'`?

当运行硒webdriver的Python脚本,一个得到了'NoneType' object has no attribute 'path'执行后self.driver.quit().
self.driver.quit()try/except没有帮助,即:

$ cat demo_NoneType_attribute_error.py
# -*- coding: utf-8 -*-
from selenium import webdriver
import unittest

class TestPass(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_pass(self):
        pass

    def tearDown(self):
        print("doing: self.driver.quit()")
        try:
            self.driver.quit()
        except AttributeError:
            pass

if __name__ == "__main__":
    unittest.main()

$ python demo_NoneType_attribute_error.py
doing: self.driver.quit()
'NoneType' object has no attribute 'path'
.
----------------------------------------------------------------------
Ran 1 test in 19.807s

OK

$
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何避免这个'NoneType' object has no attribute …

python selenium exception webdriver selenium-webdriver

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

boost.python c++ multithreading

I'm writing a python program that includes a c++ module (.so, using boost.python).
I'm starting several python threads that run a c++ function.

This is how the C++ code looks like:

#include <boost/python.hpp>
using namespace boost;
void f(){
    // long calculation

    // call python function

    // long calculation
}

BOOST_PYTHON_MODULE(test)
{
    python::def("f", &f);
}
Run Code Online (Sandbox Code Playgroud)

And the python code:

from test import f
t1 = threading.Thread(target=f)
t1.setDaemon(True)
t1.start()
print "Still running!"
Run Code Online (Sandbox Code Playgroud)

I encounter a problem: the "Still running!" …

c++ python multithreading gil boost-python

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

如何从CMake“安装” Python代码?

我有一个主要的c ++项目,我使用CMake来管理。设置cmake_install_prefix和配置后,它将生成makefile,然后可以使用非常标准的makefile进行构建和安装:

make
make install
Run Code Online (Sandbox Code Playgroud)

至此,我的二进制文件最终以结束cmake_install_prefix,而无需执行其他工作即可执行它们。最近,我在源代码树的几个位置添加了一些Python脚本,其中一些依赖于其他脚本。我可以使用CMake将Python文件和目录结构复制到cmake_install_prefix,但是如果我进入该路径并尝试使用其中一个脚本,Python将找不到其他脚本,imports因为PYTHONPATH它不包含cmake_install_prefix。我知道您可以使用CMake设置环境变量,但是它不会在各个shell之间持久存在,因此,对于用户而言,它不是真正的“设置”,而不仅仅是当前的终端会话。

解决方案似乎是在您的软件构建说明中增加一个步骤,说“设置您的PYTHONPATH”。有什么办法可以避免这种情况?这是作为较大项目的一部分“安装” Python脚本的标准做法吗?设置项目的持续集成似乎确实使事情复杂化,因为必须手动配置诸如Jenkins之类的东西才能注入环境变量,而构建和执行从c ++代码生成的可执行文件并不需要任何特殊的东西。

python cmake jenkins

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

Python:检查命名元组列表是否包含特定的属性值

我有一个命名元组列表:

from collections import namedtuple

T = namedtuple('T', ['attr1', 'attr2', 'attr3', 'attr4'])
t1 = T('T1', 1, '1234', 'XYZ')
t2 = T('T2', 2, '1254', 'ABC')
t3 = T('T2', 2, '1264', 'DEF')
l = [t1, t2, t3]
Run Code Online (Sandbox Code Playgroud)

我想检查元素在列表T中是否存在attr1 = 'T2'

通过执行以下操作检查列表是否包含此类元素:

any(x for x in l if x.attr1 == 'T2')
Run Code Online (Sandbox Code Playgroud)

仅返回该命名元组是否在列表中的信息。
我也想从列表中弹出这个namedtuple。
一种方法是:

if any(x for x in l if x.attr1 == 'T2'):
   result = [x for x in l if x.attr1 == 'T2'].pop()
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢这种解决方案,因为我在列表上循环了l两次。

有没有更好/更优雅的方法?

python list namedtuple

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

如何让 boto3 显示 _all_ RDS 实例?

尝试使用-获取所有RDS 实例boto3不会返回所有 RDS 实例。

当我查看俄勒冈 (us-west-2) 的 RDS 实例时,我看到以下内容:

俄勒冈州的 RDS 实例

但是,如果我运行下面的 Python3 脚本,我只会得到一个结果:

$ python3 ./stackoverflow.py 

RDS instances in Oregon
------------------------------
aurora-5-7-yasmin.cazdggrmkpt1.us-west-2.rds.amazonaws.com qa test db.t2.small aurora-5-7-yasmin
$ 
Run Code Online (Sandbox Code Playgroud)

您能否提出一种让 boto3 显示所有RDS 实例的方法?


$ cat ./stackoverflow.py 
import collections
import boto3
import datetime
import pygsheets

REGIONS = ('us-west-2',)
REGIONS_H = ('Oregon',)

currentDT = str(datetime.datetime.now())


def create_spreadsheet(outh_file, spreadsheet_name = "AWS usage"):
    client = pygsheets.authorize(outh_file=outh_file, outh_nonlocal=True)
    client.list_ssheets(parent_id=None)
    spread_sheet = client.create(spreadsheet_name)
    return spread_sheet


def rds_worksheet_creation(spread_sheet):
    for i in range(len(REGIONS)):
        region = REGIONS[i] …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-rds boto3

5
推荐指数
3
解决办法
4812
查看次数

在Python中与USB设备通信

我想与USB设备进行通信并将数据发送到USB设备.我能够找到该设备,但在将设备与内核驱动程序连接时,它正在给出USB Error: Resource Busy.以下是我的代码:

    dev = usb.core.find(idVendor=0x0403, idProduct=0x6001)
    dev.set_configuration() 

    cfg = dev.get_active_configuration() 

    dev.attach_kernel_driver(interface) 

    interface_number = cfg[(0,0)].bInterfaceNumber 
    alternate_settting = usb.control.get_interface(interface_number) 
    intf = usb.util.find_descriptor( 
    cfg, bInterfaceNumber = interface_number, 
    bAlternateSetting = alternate_setting) 

    ep = usb.util.find_descriptor(intf,custom_match = \
          lambda e: \
    usb.util.endpoint_direction(e.bEndpointAddress) == \
    usb.util.ENDPOINT_OUT) 

    dev.detach_kernel_driver(interface)

    ep.write("\r"+linea1[:19]+"\n\r"+" "*(20-len(linea2))+linea2)  
Run Code Online (Sandbox Code Playgroud)

python

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

计划 Cron 表达式无效?

我正在使用Schedule Cron 表达式:创建一个AWS CloudWatch规则,即 - 每个星期二和星期五的 10:30 UTC。30 10 * * 2,5 *

然而,AWS 给了我

There was an error while saving rule Snapshot_EBS_disk.
Details: Parameter ScheduleExpression is not valid..
Run Code Online (Sandbox Code Playgroud)

知道我的表情有什么问题吗?

cron amazon-web-services amazon-cloudwatch

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

如何将元素添加到bash数组?

我正在尝试将元素添加到bash数组中,我无法弄清楚为什么不添加它们:

$ cat /tmp/tmp.bash
#!/bin/bash

declare -a base=(
"python"
"python-setuptools"
)

packages=( "${base[*]}" "tools" "oracle" )
echo "$packages"

$ /tmp/tmp.bash
python python-setuptools
$ 
Run Code Online (Sandbox Code Playgroud)

在输出中,我们只看到base数组元素,但不是我添加的两个.

知道我做错了什么吗?

arrays bash

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

Is there now a way to get "AWS region names" in boto3?

现在是否boto3可以将AWS区域代码转换为AWS区域名称,例如转换('us-west-1', 'us-east-1', 'us-west-2')('N. California', 'N. Virginia', 'Oregon')

我可以使用以下代码段获取AWS区域代码列表:

 from boto3.session import Session
 s = Session()
 regions = s.get_available_regions('rds')
 print("regions:", regions)

$ python3 regions.py
regions: ['ap-northeast-1', 'ap-northeast-2', 'ap-south-1', 'ap-southeast-1', 'ap-southeast-2', 'ca-central-1', 'eu-central-1', 'eu-west-1', 'eu-west-2', 'eu-west-3', 'sa-east-1', 'us-east-1', 'us-east-2', 'us-west-1', 'us-west-2']
Run Code Online (Sandbox Code Playgroud)

是否有等效的代码段可以给我AWS区域名称?

amazon-web-services boto3

4
推荐指数
2
解决办法
941
查看次数