什么在bash中使用' - '?我知道他们可以用来
cd - #带你到旧的'现在的工作目录'some stream generating command | vim - #tothow vim获取文本.我的问题究竟是什么 - 在bash?在其他情况下我可以使用它吗?
关心阿伦
目前,我正在使用 ESP-IDF 并尝试进行单元测试。
我已经找到了https://esp-idf.readthedocs.io/en/latest/api-guides/unit-tests.html,但有一点我不明白。
但首先,让我解释一下我的设置:
IDF_PATH指向 ~/esp-idf,我的 esp-idf 套件所在的位置。如果我遵循单元测试指南中的说明,我可以构建系统中内置的测试用例。但它没有找到我的应用程序的单元测试。这很清楚,因为他们完全坐在别的地方。
我现在该怎么办?最好不要过多篡改默认的单元测试应用程序?
我可以看到几种方法,但我不知道添加自己的组件的预期方法是什么。他们的测试用例进入上述应用程序:
我今天写了这样的东西(与mpl_connect文档不同:
class Foo(object):
def __init__(self): print 'init Foo', self
def __del__(self): print 'del Foo', self
def callback(self, event=None): print 'Foo.callback', self, event
from pylab import *
fig = figure()
plot(randn(10))
cid = fig.canvas.mpl_connect('button_press_event', Foo().callback)
show()
Run Code Online (Sandbox Code Playgroud)
这看起来很合理,但它不起作用 - 就好像matplotlib失去了我给它的功能.如果不通过它Foo().callback我通过它lambda e: Foo().callback(e),它的工作原理.同样,如果我说x = Foo(),然后通过它x.callback,它的工作原理.
我的假设是,创建的未命名的Foo实例会在行Foo()之后立即销毁mpl_connect- 具有Foo.callback引用的matplotlib 不会保持Foo活动状态.那是对的吗?
在我遇到的非玩具代码中,解决方案x = Foo()没有用,大概是因为在那种情况下show()其他地方x已经超出了范围.
更一般地说,Foo().callback是一个<bound method Foo.callback of <__main__.Foo object at …
我正在使用 Unix 操作系统,我想知道如何在 Python 脚本中执行可从不同软件执行的命令。我在我的系统中安装了这个名为 HAL Tools 的软件,它有一个名为 maf2hal 的命令,带有两个参数,分别是输入和输出文件。命令的路径保存在我的 .bash_profile 中的 PATH 变量下。我同样从 UNIX 调用命令:
[root ~]$ maf2hal inputfile outputfile
Run Code Online (Sandbox Code Playgroud)
我想从 Python 脚本中调用此命令。我需要使用的语句或函数是什么。
我注意到Linux和*BSD系统允许用户在使用点十进制表示法时跳过八位字节.
这里有些例子:
$ ping 10.1
PING 10.1 (10.0.0.1) 56(84) bytes of data.
$ ping 10.15.1
PING 10.15.1 (10.15.0.1) 56(84) bytes of data.
Run Code Online (Sandbox Code Playgroud)
请注意,这不仅限于ping命令.
我找到了定义IPV4文本表示的文档,但它似乎没有涵盖该功能:IPv4和IPv6地址的文本表示.
是否还有其他文档定义此行为?这种行为有特定的名称吗?
我正在尝试将线程(使用装饰器)实现到我的应用程序,但无法理解有关锁和管理线程的一些事情.
import threading
def run_in_thread(fn):
def run(*k, **kw):
t = threading.Thread(target=fn, args=k, kwargs=kw)
t.start()
return run
class A:
@run_in_thread
def method1(self):
for x in range(10000):
print x
@run_in_thread
def method2(self):
for y in list('wlkefjwfejwiefwhfwfkjshkjadgfjhkewgfjwjefjwe'):
print y
def stop_thread(self):
pass
c = A()
c.method1()
c.method2()
Run Code Online (Sandbox Code Playgroud)
据我所知,method1和method2不是同步的,而是在锁的帮助下同步实现的东西.如何为我的装饰器功能添加锁?
如何实现使用装饰器停止长线程的方法?
考虑你有两个如下定义的python文件.假设一个是通用包(class2),另一个执行特定覆盖并充当可执行文件(class1).
class1.py:
#!/usr/bin/python
class Test(object):
pass
class Verificator():
def check(self, myObject):
if not isinstance( myObject, Test ):
print "%s is no instance of %s" % (type(myObject),Test)
else:
print "OK!"
if __name__ == '__main__':
from class2 import getTest
v = Verificator()
t = Test()
v.check(t)
s = getTest()
v.check(s)
Run Code Online (Sandbox Code Playgroud)
class2.py:
from class1 import Test
def getTest():
return Test()
Run Code Online (Sandbox Code Playgroud)
会发生的事情是第一次检查没问题,第二次检查失败.其原因是,t是__main__.Test,而s是class1.Test和v.check()支票__main__.Test,但在一天结束的时候它是同一类的吧?
有没有办法写v.check()这样的,它也接受class1.Test对象,或任何其他方式来解决这个问题?
我对Popen.communicate()有疑问.
我有返回字符串的脚本.
然后我写了第二个脚本来获取该变量.
v = "./myscript arg1 arg2"
com = subprocess.Popen(v, shell=True).communicate()
print com
Run Code Online (Sandbox Code Playgroud)
com返回(无,无).关键是我可以在第一个脚本里面打印结果,shell打印结果也是如此.我不能只将该打印分配给变量.
当然第一个脚本返回值,而不是打印它.
我已经安装了Python 2.7.9 /usr/local/bin.现在它不再起作用了.我有另一个Python,/usr/bin/但在路径中是/usr/local/bin/第一个.我怎样才能删除2.7.9 Python?
该getaddrinfo()函数不仅允许客户端程序有效地找到用于创建给定主机的套接字的正确数据,它还允许服务器绑定到正确的套接字 - 理论上.
我刚刚了解了这一点并开始通过Python来解决它:
from socket import *
for i in getaddrinfo(None, 22, AF_UNSPEC, SOCK_STREAM, IPPROTO_IP, AI_PASSIVE): i
Run Code Online (Sandbox Code Playgroud)
产量
(2, 1, 6, '', ('0.0.0.0', 22))
(10, 1, 6, '', ('::', 22, 0, 0))
Run Code Online (Sandbox Code Playgroud)
是什么让我想知道是否有什么不对劲.
我应该对这些答案究竟做些什么?我是不是该
listen()所有这些答案的插座,或者我应该该联机帮助页中的示例建议我只选择第一个并且如果它没有错误就对它感到满意,但在我的示例中我只通过IPv4获得连接.
但是,如果我尝试所有这些,我不得不担心2个服务器套接字,这是不必要的,因为如果满足某些条件(OS,套接字标志等),IPv6服务器套接字也会监听IPv4.
我错在哪里?
编辑:很明显,我没想错,但我的电脑做错了.我使用/etc/gai.confOpenSUSE附带的默认值.如果有人能指出我正确的方向,那将是很好的.
编辑2:在给定的情况下,strace在读取后给出内部进行的以下调用/etc/gai.conf(现在使用端口54321,因为我认为使用端口22可能会产生一些不良影响,但事实并非如此):
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET6, sin6_port=htons(54321), inet_pton(AF_INET6, "::", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = 0
getsockname(3, {sa_family=AF_INET6, sin6_port=htons(38289), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, …Run Code Online (Sandbox Code Playgroud) python ×6
linux ×2
bash ×1
decorator ×1
embedded ×1
esp32 ×1
getaddrinfo ×1
ipv4 ×1
matplotlib ×1
namespaces ×1
rfc ×1
serversocket ×1
shell ×1
sockets ×1
ubuntu ×1
unit-testing ×1
unix ×1