在我的应用程序中,我正在使用python.logging日志记录.
现在我想以交互方式控制loglevel,所以我创建了一个组合框,让用户选择" ERROR "," WARN "," INFO ",......
我真的不喜欢的是,目前组合框中的值是硬编码的.相反,Ii想要列出所有"命名"的日志级别(例如,系统默认值,但也包括那些添加的logging.addLevelName;但不是假设生成的日志级别,如" 级别42 ")
到目前为止,我提出的最好的方法是使用logging._levelNames字典.
但后来这似乎是一个私人成员,我不知何故感觉直接访问它.
所以我的问题是:在Python中列出所有当前定义的"命名"日志级别的正确方法是什么.
分发应用程序依赖项的最佳方法是什么?
假设我想发布依赖于的应用程序SqlAlchemy- 是否有一种干净的方式包含SqlAlchemy在我的存储库中而不强迫用户安装它?
我正在使用python-daemon包在python中编写一个守护进程.守护进程在启动时(init.d)启动,需要访问各种设备.守护进程是在运行ubuntu 的嵌入式系统(beaglebone)上运行的.
现在我的问题是我想将守护进程作为非特权用户运行而不是(例如mydaemon)root.
为了允许守护进程访问设备,我将该用户添加到所需的组中.在我使用的python代码中daemon.DaemonContext(uid=uidofmydamon).
该过程由rootdaemonizes很好地启动,并由正确的用户拥有,但在尝试访问设备时,我获得了权限被拒绝的错误.我写了一个小的测试应用程序,似乎该进程没有继承用户的组成员身份.
#!/usr/bin/python
import logging, daemon, os
if __name__ == '__main__':
lh=logging.StreamHandler()
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(lh)
uid=1001 ## UID of the daemon user
with daemon.DaemonContext(uid=uid,
files_preserve=[lh.stream],
stderr=lh.stream):
logger.warn("UID : %s" % str(os.getuid()))
logger.warn("groups: %s" % str(os.getgroups()))
Run Code Online (Sandbox Code Playgroud)
当我以uid = 1001的用户运行上面的代码时,我得到类似的东西
$ ./testdaemon.py
UID: 1001
groups: [29,107,1001]
Run Code Online (Sandbox Code Playgroud)
而当我以root(或su)运行上面的代码时,我得到:
$ sudo ./testdaemon.py
UID: 1001
groups: [0]
Run Code Online (Sandbox Code Playgroud)
如何创建由root启动的守护程序进程,但具有不同的有效uid 和完整的组成员身份?
在我的 CI 设置中,我想确保安装了给定公式的最新版本,无论它是否已经安装。
我目前正在使用类似的东西:
brew update
brew install FORMULA || (brew upgrade FORMULA && brew cleanup FORMULA)
Run Code Online (Sandbox Code Playgroud)
这种方法有什么陷阱?有没有更好的方法来解决这个问题(例如,首先查询 FORMULA 是否已经安装,而不是brew install仅在安装 FORMULA 时才依赖失败)?
我想克隆一个历史悠久的存储库。我只对一些短暂的尚未合并的功能分支和master.
为了不让自己与所有过去的历史和合并的分支混淆,我想从特定的提交 SHA 开始进行浅层克隆。
但是,到目前为止,我只找到了有关如何进行浅层克隆的文档,这些克隆仅包括最后一次n提交 ( --depth) 和自特定日期 ( --shallow-since)以来的提交。
有没有办法指定从给定提交开始的浅克隆?
我正在尝试使用 gstreamer 将网络摄像头的流保存为一系列图像。到目前为止我已经写了这段代码......
#!/usr/bin/python
import sys, os
import pygtk, gtk, gobject
import pygst
pygst.require("0.10")
import gst
def __init__(self):
#....
# Code to create a gtk Window
#....
self.player = gst.Pipeline("player")
source = gst.element_factory_make("v4l2src", "video-source")
sink = gst.element_factory_make("xvimagesink", "video-output")
caps = gst.Caps("video/x-raw-yuv, width=640, height=480")
filter = gst.element_factory_make("capsfilter", "filter")
filter.set_property("caps", caps)
self.player.add(source, filter, sink)
gst.element_link_many(source, filter, sink)
Run Code Online (Sandbox Code Playgroud)
之后,我尝试通过总线创建一个信号来侦听来自源或接收器的任何消息,以指示已发送或接收新帧,以便可以保存它。
bus = self.player.get_bus()
bus.add_signal_watch()
bus.connect("message::any", self.save_file,"Save file")
Run Code Online (Sandbox Code Playgroud)
其中 save_file 是我的回调,我要在其中保存文件。
def save_file(self, bus, msg):
print "SAVED A NEW FILE"
Run Code Online (Sandbox Code Playgroud)
我有两个问题,
更新(2012 …
我正在编写bash脚本,它在某些部分将通过ssh rsync文件.不幸的是,我遇到了将rsync选项保持为变量的问题.请看下面的内容:
# variables
directory="/etc"
backupDirectory="/backup"
incrementalBackup="/incremental"
options="-a -e 'ssh -p 10022' -b --backup-dir=$incrementalBackup --delete"
# rsync
rsync $options user@server:$directory $backupDirectory
Run Code Online (Sandbox Code Playgroud)
不幸的是,上面的脚本因rsync错误而失败
Unexpected remote arg: user@server:/etc
rsync error: syntax or usage error (code 1) at main.c(1201) [sender=3.0.6]
Run Code Online (Sandbox Code Playgroud)
我在脚本调试过程中看到的是,ssh选项('ssh -p 10022')被视为rsync选项.问题是如何正确地将这些额外的ssh设置传递给rsync?提前感谢您提示.
在C++中实现基于模板的工厂时,我创建了以下allocator函数来实例化给定的子类:
template<class ChildClass, class ParentClass>
ParentClass* allocator() {
ChildClass *child = new ChildClass();
ParentClass*parent = dynamic_cast<ParentClass*>(child);
if(NULL==parent) {
delete child;
return NULL;
}
return parent;
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但是当通过静态代码分析工具(如coverity)运行代码时,该delete child;行被标记为逻辑死代码.
我执行运行时检查的原因是断言,即ChildClass派生自ParentClass.
现在我明白了,在模板扩展期间,编译器已经知道是否ChildClass从中派生ParentClass,并且dynamic_cast只在运行时进行评估.
所以运行时检查在逻辑上是死代码,如果ChildClass它确实来自ParentClass(在这种情况下,如果已成功分配,dynamic_cast将始终返回).non-NULLChildClass
但有没有办法确保ChildClass从ParentClass编译时(模板扩展时间)派生出来?
afaik,模板和继承在C++中是无关的,但我可能会遗漏一些明显的东西.
遗憾的是,代码应该在较旧的编译器上编译(例如,C++ - Visual Studio 6附带的实现),它排除了任何较新的扩展,如C++11-features
我有这个警告
(最后一个新路径:还没有(奇数,检查语法!))
在我尝试模糊文件后以红色显示.我不知道它为什么会发生,我用谷歌搜索没有答案.
我的命令如下:
afl-fuzz -i testcases/ -o findings/ tcpdump-4.6.2/tcpdump -nr @@
Run Code Online (Sandbox Code Playgroud) python ×4
linux ×2
v4l2 ×2
bash ×1
c++ ×1
dynamic-cast ×1
fuzzing ×1
git ×1
gstreamer ×1
homebrew ×1
inheritance ×1
logging ×1
python-2.7 ×1
rsync ×1
security ×1
ssh ×1
templates ×1
ubuntu ×1
uvc ×1
virtualenv ×1