Найти - Пользователи
Полная версия: SyntaxError: EOL while scanning string literal
Начало » Python для новичков » SyntaxError: EOL while scanning string literal
1
darksmoke
Почему так происходит? как это исправить?
    if logstash_input_type == 'rabbitmq':
        config = 'input {         
                rabbitmq {
                    durable => true
                    password => '+ rabbitmq_password +'
                    port => 5672
                    queue =>  '+ rabbitmq_queue +' 
                    threads => '+ cpu-minus-odin +' 
                    user => '+ rabbitmq_user +'
                }
            }'
run('echo -e "'+ config +'" >'+ install_path +'/logstash/logstash.conf')
config = 'input {
^
SyntaxError: EOL while scanning string literal

alexsis
config = """input {         
                rabbitmq {
                    durable => true
                    password => '+ rabbitmq_password +'
                    port => 5672
                    queue =>  '+ rabbitmq_queue +' 
                    threads => '+ cpu-minus-odin +' 
                    user => '+ rabbitmq_user +'
                }
            }"""
darksmoke
А как переменнуэ вставить?

Traceback (most recent call last):
File “/usr/local/lib/python2.7/dist-packages/fabric/main.py”, line 743, in main
*args, **kwargs
File “/usr/local/lib/python2.7/dist-packages/fabric/tasks.py”, line 384, in execute
multiprocessing
File “/usr/local/lib/python2.7/dist-packages/fabric/tasks.py”, line 274, in _execute
return task.run(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/fabric/tasks.py”, line 174, in run
return self.wrapped(*args, **kwargs)
File “/home/darksmoke/Soft/fabfile.py”, line 66, in logstashinstall
user => “”“+ rabbitmq_user +”“”
TypeError: cannot concatenate ‘str’ and ‘function’ objects

        config = """input {         
                rabbitmq {
                    durable => true
                    password => """+ rabbitmq_password +"""
                    port => 5672
                    queue =>  """+ rabbitmq_queue +"""
                    threads => """+ cpu_minus_odin +"""
                    user => """+ rabbitmq_user +"""
                }
            }"""
alexsis
Похоже, что rabbitmq_user - функция. Попробуйте ее вызвать.
darksmoke
В продолжение темы. Подскажите в чем бок?
def cpu_minus_odin():
    c = run("lscpu | grep -E '^CPU\(s\)' | awk '{print $2}'")
    i = int(c)
    s = i-1
    r = str(s)
    return r
    
использую так
 config = """input {
              redis {
                host => """+ redis_host +"""
                password => """+ redis_password + """
                port => 6379
                threads => """+ cpu_minus_odin +"""
              }
            }"""
Ошибка
Traceback (most recent call last):
File “/usr/local/lib/python2.7/dist-packages/fabric/main.py”, line 743, in main
*args, **kwargs
File “/usr/local/lib/python2.7/dist-packages/fabric/tasks.py”, line 384, in execute
multiprocessing
File “/usr/local/lib/python2.7/dist-packages/fabric/tasks.py”, line 274, in _execute
return task.run(*args, **kwargs)
File “/usr/local/lib/python2.7/dist-packages/fabric/tasks.py”, line 174, in run
return self.wrapped(*args, **kwargs)
File “/home/darksmoke/Soft/fabfile.py”, line 75, in logstashinstall
threads => “”“+ cpu_minus_odin +”“”
TypeError: cannot concatenate ‘str’ and ‘function’ objects
Disconnecting from 10.56.0.5… done.
dimy44
Написано же- вы к строке хотите функцию присоединить. Вам нужна не сама функция, а то, что она возвращает, для этого ее нужно вызвать - дописать скобочки () в конце имени функции (с аргументами или без, в зависимости от требований самой функции)
darksmoke
dimy44
Спасибо большое, доступно и понятно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB