小编use*_*716的帖子

python相当于sed

有没有办法,没有双循环来完成以下sed命令的作用

输入:

Time
Banana
spinach
turkey
Run Code Online (Sandbox Code Playgroud)

sed -i "/Banana/ s/$/Toothpaste/" file

输出:

Time
BananaToothpaste
spinach
turkey
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是一份双重清单,需要很长时间才能完成.

列表a有一堆数字列表b有一堆相同的数字,但顺序不同

对于A中的每个条目,我想在B中找到具有相同数字的行,并在其末尾添加值C.

希望这是有道理的,即使我的例子没有.

我在Bash中做了以下操作但它工作得很慢但是速度很慢......

for line in $(cat DATSRCLN.txt.utf8); do
        srch=$(echo $line | awk -F'^' '{print $1}');
        rep=$(echo $line | awk -F'^' '{print $2}');
        sed -i "/$(echo $srch)/ s/$/^$(echo $rep)/" tmp.1;
done
Run Code Online (Sandbox Code Playgroud)

谢谢!

python

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

阻止subprocess.Popen在python中显示输出

所以我试图将命令的输出存储到变量中.虽然我不希望它在运行命令时显示输出...

我现在的代码如下......

def getoutput(*args):
    myargs=args
    listargs=[l.split(' ',1) for l in myargs]
    import subprocess
    output=subprocess.Popen(listargs[0], shell=False ,stdout=subprocess.PIPE)   
    out, error = output.communicate()
    return(out,error)


def main():

    a,b=getoutput("httpd -S")

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

如果我把它放在一个文件中并在命令行上执行它.即使我在代码中没有print语句,我也得到以下输出.如何在保存输出的同时防止这种情况?

#python ./apache.py 
httpd: Could not reliably determine the server's fully qualified domain name, using xxx.xxx.xxx.xx for ServerName
Syntax OK
Run Code Online (Sandbox Code Playgroud)

python subprocess

10
推荐指数
1
解决办法
2万
查看次数

mock xmlrpc.client方法python

我正在学习单元测试,但是我很难理解如何模拟单元测试的功能.我已经回顾了许多操作方法和示例,但这个概念没有足够的转让我在我的代码中使用它.我希望得到这个能够帮助我的实际代码示例.

在这种情况下,我试图模拟isTokenValid.

这是我想要模拟的示例代码.

<in library file>

import xmlrpc.client as xmlrpclib   

class Library(object):
    def function:
        #...
        AuthURL = 'https://example.com/xmlrpc/Auth'
        auth_server = xmlrpclib.ServerProxy(AuthURL)
        socket.setdefaulttimeout(20)
        try:
            if pull == 0:
                valid = auth_server.isTokenValid(token)
        #...
Run Code Online (Sandbox Code Playgroud)

在我的单元测试文件中

import library

class Tester(unittest.TestCase):
    @patch('library.xmlrpclib.ServerProxy')
    def test_xmlrpclib(self, fake_xmlrpclib):
        assert 'something'
Run Code Online (Sandbox Code Playgroud)

我如何模拟'function'中列出的代码?令牌可以是任何数字作为字符串,有效将是一个int(1)

python unit-testing mocking

8
推荐指数
2
解决办法
740
查看次数

错误!分割参数失败,无论是不平衡的 jinja2 块还是引号:

我有一个可以在 bash shell 中运行的脚本。我将其放入 Ansible 中,导致 playbook 出现异常。

- name: add mnt to ignore_filesystems
  shell: |
    grep ignore_filesystem {{ cdm_path }} | awk -F'=' '{print $2}' | egrep '\^\\/mnt\*'
    if [ $? -eq 0 ]; then
        echo 'do nothing';
     else
        echo 'no';
        items=$(grep ignore_filesystem {{ cdm_path }} | awk -F'=' '{print $2}')
        if [ ${#items} -gt 1 ]; then
            echo 'making the change'
            sed -ie  '/ignore_filesystem/ s~$~|^\\/mnt*~' {{ cdm_path }}
        else
            echo 'making the change'
            sed -ie '/ignore_filesystem/ s~ignore_filesystem = …
Run Code Online (Sandbox Code Playgroud)

bash yaml jinja2 ansible

8
推荐指数
1
解决办法
2万
查看次数

/socket.io/*404找不到烧瓶

我想让socketio正常工作.当我使用以下javascript加载我的页面时.它尝试按预期拉出socket.io页面,但每次都找不到404.

<div id="result"></div>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="https://cdn.socket.io/socket.io-1.2.1.js"></script>
<script>
$(function(){
    var socket = io.connect('/endpoint');

    // on receive append data.sound and linebreak to result id on page
    socket.on('receive', function(data){
        $('#result').append(data.mytext);
    });

    $('form#emit').submit(function(event) {
        socket.emit('submit', {account: $('#account').val(),
...
Run Code Online (Sandbox Code Playgroud)

这是socketIO要使用的flask端点

@app.route('/socket.io/<path:remaining>')
def iocg(remaining):
    from websocketinstructions import WebSocketInstructions
    socketio_manage(request.environ, {'/endpoint': WebSocketInstructions}, request)
    return 'done'


127.0.0.1 - - [2014-11-24 15:29:05] "GET /socket.io/?EIO=3&transport=polling&t=1416864545405-114 HTTP/1.1" 404 342 0.002768
127.0.0.1 - - [2014-11-24 15:29:06] "GET /socket.io/?EIO=3&transport=polling&t=1416864546666-4 HTTP/1.1" 404 342 0.002745
127.0.0.1 - - [2014-11-24 15:29:10] "GET /socket.io/?EIO=3&transport=polling&t=1416864550413-115 …
Run Code Online (Sandbox Code Playgroud)

python flask socket.io

7
推荐指数
1
解决办法
1040
查看次数

Socket.io 与flask-socketio python。如何设置套接字保持活动/超时

我正在努力寻找有关 socket.io 超时值的任何文档。我在客户端使用 //cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js 在服务器端使用 Flask-SocketIO。

这是我创建套接字的方式:

namespace = '/coregrapher'

var socket = io.connect('http://' + document.domain + ':' + location.port + namespace);

socket.on('connect', function() {
    socket.emit('my event', {data: 'I\'m connected!'});
});

socket.on('my response', function(msg) {
    $('#result').append(msg.data);
});
Run Code Online (Sandbox Code Playgroud)

问题是,如果服务器甚至一分钟都没有向客户端或 Visaversa 发送任何内容,则客户端会断开连接,如果服务器尝试向客户端再次发送,则会失败,因为客户端已经断开连接。如何让客户端保持连接?

谢谢!

python websocket socket.io flask-socketio

7
推荐指数
1
解决办法
9432
查看次数

RuntimeError:在请求上下文之外工作

我正在尝试创建一个'keepalive'websocket线程,一旦有人连接到页面但每10秒发送一次,就会发出一个错误但是不确定如何绕过它.知道如何使这项工作.一旦'断开'被发送,我将如何杀死这个线程?

谢谢!

@socketio.on('connect', namespace='/endpoint')
def test_connect():
    emit('my response', {'data': '<br>Client thinks i\'m connected'})

    def background_thread():
        """Example of how to send server generated events to clients."""
        count = 0
        while True:
            time.sleep(10)
            count += 1
            emit('my response', {'data': 'websocket is keeping alive'}, namespace='/endpoint')

    global thread
    if thread is None:
        thread = Thread(target=background_thread)
        thread.start()
Run Code Online (Sandbox Code Playgroud)

python websocket flask flask-socketio

7
推荐指数
1
解决办法
6428
查看次数

celery pdb在更改的侦听端口内运行的docker容器内

寻找有关如何在端口转发时在我的docker容器内运行celery pdb的建议,以便我可以从外部世界访问.

我正在关注http://celery.readthedocs.org/en/latest/tutorials/debugging.html上的指南

我面临的问题是,即使我告诉容器.

-e CELERY_RDB_HOST ='0.0.0.0'-cELERY_RDB_PORT ='6900'-p 6900:6900.

并且到达应用程序中的断点,实际打开的端口不是我要求的端口,因此我的端口转发不再有效....例如.相反,端口6902被打开,无论我要求端口是什么,它都会再次变化,而不是我要求的.

我知道它从100个端口列表中选择它认为"可用"但不确定如何解决这个问题.任何建议都会受到欢迎.

谢谢!

python celery pdb docker

6
推荐指数
1
解决办法
870
查看次数

如何在硬超时重试芹菜任务?

我有一个芹菜任务如下:

@celery.task(name='tasks.ht_run', default_retry_delay=30, max_retries=15, time_limit=1)  
def ht_run(str_command):
    try:
        f = os.popen(str_command)
        output = f.read()
        if output == '':
            raise Exception
    except Exception as exc:
        raise ht_run.retry(exc=exc)

    return output.split('\n')
Run Code Online (Sandbox Code Playgroud)

它被调用如下:appserver.ht_run.delay(string)

虽然我希望它在超时时重试,但如果失败了.在Celery窗口中,我收到以下错误:

[2014-12-10 11:50:22,128: ERROR/MainProcess] Task tasks.ht_run[6a83793a-8bd6-47fc-bf74-0b673bf961f2] raised unexpected: TimeLimitExceeded(1,)
Traceback (most recent call last):
  File "/Users/andy.terhune/cgenv/lib/python2.6/site-packages/billiard/pool.py", line 639, in on_hard_timeout
    raise TimeLimitExceeded(job._timeout)
TimeLimitExceeded: TimeLimitExceeded(1,)
[2014-12-10 11:50:22,128: ERROR/MainProcess] Hard time limit (1s) exceeded for tasks.ht_run[6a83793a-8bd6-47fc-bf74-0b673bf961f2]
[2014-12-10 11:50:23,644: ERROR/MainProcess] Process 'Worker-28' pid:2081 exited with 'signal 9 (SIGKILL)'
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它超时并重试呢?

python celery

6
推荐指数
1
解决办法
4334
查看次数

可在 networkx 中使用的属性列表

我正在使用 networkx,但无法在任何地方找到边或节点的可用属性列表。我对已经分配的属性不感兴趣,但我对创建或编辑节点或边时可以设置/更改的内容不感兴趣。

有人可以指出我记录的地方吗?

谢谢!

python networkx

6
推荐指数
2
解决办法
4271
查看次数