我正在尝试编写一个Python脚本来监视rsync传输,并提供(粗略)估计百分比进度.对于我的第一次尝试,我查看了一个rsync --progress
命令,看到它打印的消息如下:
1614 100% 1.54MB/s 0:00:00 (xfer#5, to-check=4/10)
我为这样的消息编写了一个解析器,并使用to-check部分来产生一个百分比进度,在这里,这将完成60%.
但是,这有两个缺陷:
我已经看过要使用的其他消息替代方案,但还没有设法找到任何东西.有没有人有任何想法?
提前致谢!
我在Scala中有一个类,它目前以标准方式构建:
class Test( int : Int )
{
override def toString() = "Test: %d".format( int )
}
Run Code Online (Sandbox Code Playgroud)
但是,我想通过伴侣对象转移到间接构建.由于我正在修改的库被其他人使用,我不想直接将构造函数设为私有.相反,我想弃用它,然后在人们有机会改变其使用情况后回来并将其设为私有.所以我修改了我的代码:
object Test
{
def apply( int : Int ) = new Test( int )
}
@deprecated( "Don't construct directly - use companion constructor", "09/04/13" )
class Test( int : Int )
{
override def toString() = "Test: %d".format( int )
}
Run Code Online (Sandbox Code Playgroud)
但是,这会弃用整个班级.
scala> Test( 4 )
<console>:10: warning: class Test in package foo is deprecated: Don't construct directly - use companion constructor …
Run Code Online (Sandbox Code Playgroud) 我在他们自己的包中有一些Scala类和对象.每个包都有一个包定义一些含义的包对象,因此例如import com.foo.bar._
从bar
包中导入所有含义和类
我想知道的是,有没有办法定义一个"伞"导入com.foo.all
,比如这样
import com.foo.all._
Run Code Online (Sandbox Code Playgroud)
相当于
import com.foo.bar._
import com.foo.baz._
import com.foo.qux._
...
Run Code Online (Sandbox Code Playgroud)
我可以理解这可能有点不清楚,但如果我考虑我拥有大量自己的包的情况,这显然会更简洁.
我正在使用Scala 2.9.2,并希望根据某些条件构建一个列表.
考虑以下内容,其中cond是一些函数,它采用谓词p和类型T的值(在本例中为t3):
t1 :: t2 :: cond( p, t3 ) :: t4
Run Code Online (Sandbox Code Playgroud)
我想要的行为如下.如果p为真,则应该给出:
List[T]( t1, t2, t3, t4 )
Run Code Online (Sandbox Code Playgroud)
如果p的计算结果为false,则应该给出:
List[T]( t1, t2, t4 )
Run Code Online (Sandbox Code Playgroud)
我可能完全以错误的方式思考这个问题,但我很难想出一个优雅的解决方案.我可以在任何地方参与选项然后过滤,但这会使代码更难以阅读:
def cond[T]( p : => Boolean, v : T ) : Option[T] =
{
p match
{
case true => Some( v )
case false => None
}
}
Run Code Online (Sandbox Code Playgroud)
这允许以下内容:
scala> ( Some( 1 ) :: Some( 2 ) :: cond( true, 3 ) :: Some( 4 ) :: Nil ).flatten
res4: List[Int] …
Run Code Online (Sandbox Code Playgroud) 我在PyQt中的Threads之间进行通信时遇到了一些问题.我正在使用信号在两个线程,发送者和监听器之间进行通信.发送方发送消息,预计将由侦听器接收.但是,没有收到任何消息.任何人都可以建议可能出错的地方?我敢肯定它一定很简单,但我一直在寻找几个小时但没找到任何东西.提前致谢!
from PyQt4 import QtCore,QtGui
import time
class Listener(QtCore.QThread):
def __init__(self):
super(Listener,self).__init__()
def run(self):
# just stay alive, waiting for messages
print 'Listener started'
while True:
print '...'
time.sleep(2)
def say_hello(self):
print ' --> Receiver: Hello World!'
class Sender(QtCore.QThread):
# a signal with no arguments
signal = QtCore.pyqtSignal()
def __init__(self):
super(Sender,self).__init__()
# create and start a listener
self.listener = Listener()
self.listener.start()
# connect up the signal
self.signal.connect(self.listener.say_hello)
# start this thread
self.start()
def run(self):
print 'Sender starting'
# send five …
Run Code Online (Sandbox Code Playgroud) 我正在使用SBT 0.13.我遇到了一个问题,以下玩具示例展示了这个问题:
lazy val nativeOne = TaskKey[Unit]( "nativeOne", "One" )
lazy val nativeTwo = TaskKey[Unit]( "nativeTwo", "Two" )
lazy val testProj = Project(
id = "testProj",
base = file( "." ),
settings = Defaults.defaultSettings ++ Seq(
scalaVersion := "2.10.2",
nativeOne :=
{
println( "Native one"
},
nativeTwo :=
{
if ( true )
{
println( "Native two" )
}
else
{
val n1 = nativeOne.value
}
}
)
)
Run Code Online (Sandbox Code Playgroud)
如果我进入sbt并运行nativeTwo
:
> nativeTwo
Native one
Native two
Run Code Online (Sandbox Code Playgroud)
为什么会这样?为什么要对false …
在Scala中,我正在尝试生成一组通用的检查来运行某些数据.
我的基本特征看起来像这样:
trait Check[T]
{
def complete() : Boolean = ...
def passed() : Boolean = ...
def update[T]( data : T ) : Unit
}
Run Code Online (Sandbox Code Playgroud)
然后我有两个子特征,看起来有点像这样:
trait CheckFoo extends Check[Foo]{ val baz = 1 }
trait CheckBar extends Check[Bar]{ val baz = 2 }
Run Code Online (Sandbox Code Playgroud)
这是为了避免我在每个Foo和Bar检查中定义baz.
然后我有一些实际的Foo检查,例如
class CheckFooOne extends CheckFoo
{
def update( data : Foo ) : Unit = ...
}
Run Code Online (Sandbox Code Playgroud)
但是这不会编译:它告诉我CheckFooOne必须是抽象的,因为没有定义方法更新.
我做错了什么?我确信我错过了一些微妙之处.我很抱歉,如果还有这样的问题,但是我想不出要搜索的内容,而且我已经毫无欢乐地查看了类似问题的列表.
scala ×4
python ×2
annotations ×1
collections ×1
constructor ×1
deprecated ×1
if-statement ×1
inheritance ×1
package ×1
progress ×1
pyqt ×1
rsync ×1
sbt ×1
signals ×1
traits ×1