这可能是新手逃避问题。我正在尝试在这样的 for 循环中运行命令
$ for SET in `ls ../../mybook/WS/wsc_production/`; do ~/sandbox/scripts/ftype-switch/typesort.pl /media/mybook/WS/wsc_production/$SET ./wsc_sorter/$SET | tee -a sorter.log; done;
Run Code Online (Sandbox Code Playgroud)
但我最终还是sorter.log空虚了。(我确定有一些输出。)如果我转义管道符号 ( \|),我最终会得到任何输出sorter.log。
我究竟做错了什么?
$ bash --version
GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)
编辑:哎呀,/media/mybook/ 睡着了,所以实际上没有输出。该代码首先是正确的。不过还是谢谢大家的评论。
如何使TCP服务器正确关闭套接字?
我编写了一个简单的TCP服务器,将某些信息回显给客户端。现在,我想在localhost:8088上使用它,并在使用killall代码时随时停止使用并重新启动它。
但是,我无法使其关闭所有套接字并“释放”地址,因此,当我快速进行一些测试时,修复代码中的某些内容,然后停止(Ctrl + C)并再次启动服务器,我得到了socket.error: [Errno 98] Address already in use。
当我时sudo netstat -ntap,我仍然可以看到几个127.0.0.1:8088处于TIME_WAIT状态的套接字。所以我必须等到他们“消亡”。
我的测试用例:
#!/usr/bin/python
import SocketServer
class MyEchoHandler(SocketServer.BaseRequestHandler):
def handle(self):
self.data = self.request.recv(1024).strip()
# do something smart with the data, but for now, just say hello.
self.reply = "Content-Type: text/plain\r\n\r\nhello."
self.request.send(self.reply)
self.request.close()
def main():
server = SocketServer.TCPServer((HOST, PORT), MyEchoHandler)
server.serve_forever()
if __name__ == '__main__':
HOST, PORT = "localhost", 8088
main()
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?还self.request.close()不够吗?
我正在使用Python 2.7.3在Debian上进行尝试,尽管我也需要在Python 2.6中支持Squeeze。
假设我有一个数组
@arr = qw( 12 2 5 bba<1s54> 10 11 )
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"bba<1s54>"如何从此数组中删除非数字项?
这个独特的"术语"有格式"bba<...>".是否可以使用正则表达式删除它?
当我试图将计数器放入Python的内联循环时,它会告诉我语法错误.显然,在这里希望我的值赋给i没有k.
任何人都可以帮助重写内联循环吗?
aa = [2, 2, 1]
k = 0
b = [k += 1 if i != 2 for i in aa ]
print(b)
Run Code Online (Sandbox Code Playgroud)