Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Python一个打印命令两个变量向屏幕输出两个不同的行_Php_Python_Linux_Newline_Python 2.6 - Fatal编程技术网

Php Python一个打印命令两个变量向屏幕输出两个不同的行

Php Python一个打印命令两个变量向屏幕输出两个不同的行,php,python,linux,newline,python-2.6,Php,Python,Linux,Newline,Python 2.6,我有一个可以通过Apache访问的php脚本,它在两台服务器上调用一个python脚本到cat/etc/redhat release,返回结果并将它们作为两个不同的变量分配。然后我将这两个变量打印到屏幕上。问题是,它将它们打印在屏幕上的同一行:[“Red Hat Enterprise Linux Server 6.5版(圣地亚哥)\n”,“Red Hat Enterprise Linux Server 6.2版(圣地亚哥)\n'] 我已尝试在to之间插入\n或“\n”,但出现错误: Syntax

我有一个可以通过Apache访问的php脚本,它在两台服务器上调用一个python脚本到cat/etc/redhat release,返回结果并将它们作为两个不同的变量分配。然后我将这两个变量打印到屏幕上。问题是,它将它们打印在屏幕上的同一行:[“Red Hat Enterprise Linux Server 6.5版(圣地亚哥)\n”,“Red Hat Enterprise Linux Server 6.2版(圣地亚哥)\n']

我已尝试在to之间插入\n或“\n”,但出现错误: SyntaxError:无效语法

File "/var/www/html/php/check_version.py", line 35
  print first + \n second
                        ^
SyntaxError: unexpected character after line continuation character
如果我把它们打印在两行上,它只会给我最后一个变量。例如:

print first
print second ( I only get this result on the screen )
我错过了什么

这是我的剧本:

#!/usr/bin/python

import paramiko, os, string, threading
import getpass
import socket
import sys

firsthost = '192.168.1.4'

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(firsthost, username='user', password='password')

stdin, stdout, stderr = ssh.exec_command('cat /etc/redhat-release')

first = stdout.readlines()

secondhost = '192.168.1.5'

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(secondhost, username='user', password='password')

stdin, stdout, stderr = ssh.exec_command('cat /etc/redhat-release')

second = stdout.readlines()

print first + second

ssh.close()

您需要在引号中加上
\n
。它也是一个字符串文字,因此需要将
第一个
“\n”
第二个
连接在一起,以形成一个要打印的字符串

print first + "\n" + second

您需要在引号中加上
\n
。它也是一个字符串文字,因此需要将
第一个
“\n”
第二个
连接在一起,以形成一个要打印的字符串

print first + "\n" + second

您忘记了
+
(连接字符串)和“\n”(使其成为字符串)周围的引号:

我更喜欢
格式
,不过:

>>> print 'a{}b'.format('\n')
a
b
编辑:正如@Bob所说,在旧版Python中,您需要发布

'a{0}b'.format('\n')

在2.6中,第一个代码段对我来说运行良好。

您忘记了
+
(用于连接字符串)和“\n”(使其成为字符串)周围的引号:

我更喜欢
格式
,不过:

>>> print 'a{}b'.format('\n')
a
b
编辑:正如@Bob所说,在旧版Python中,您需要发布

'a{0}b'.format('\n')

在2.6中,第一个代码片段对我来说运行良好。

您忘记了
+
介于
第一个
第二个
之间。要修复您的示例,请执行以下操作:

`print first + '\n' + second`
或者您可以执行如下格式字符串:(我的首选项)


您忘记了
+
第一个
第二个
之间。要修复您的示例,请执行以下操作:

`print first + '\n' + second`
或者您可以执行如下格式字符串:(我的首选项)


注意:您当前正在使用以下命令从标准输出中提取信息:

first = stdout.readlines()
second = stdout.readlines()
这将返回一个列表,当您将它们添加到一起时,将打印出一个列表。你不会想要的。您希望它们是字符串(在过多的换行符上剥离它们也是一个好主意),因此您希望执行以下操作:

first = stdout.readline().strip()
second = stdout.readline().strip()
从那里,您可以使用标记将它们回送到html,以分隔行:

print "{0}</br>{1}".format(first,second)
打印“{0}
{1}”。格式(第一,第二)

但是,如果您在获取有效输出时遇到问题(正如您在许多评论中所说的),您可能希望在php接口之前手动运行脚本,以确定它是否工作。让它简单地打印出变量,如果不能,那么您的ssh exec_命令有问题。

注意:您当前正在使用以下命令从stdout提取信息:

first = stdout.readlines()
second = stdout.readlines()
这将返回一个列表,当您将它们添加到一起时,将打印出一个列表。你不会想要的。您希望它们是字符串(在过多的换行符上剥离它们也是一个好主意),因此您希望执行以下操作:

first = stdout.readline().strip()
second = stdout.readline().strip()
从那里,您可以使用标记将它们回送到html,以分隔行:

print "{0}</br>{1}".format(first,second)
打印“{0}
{1}”。格式(第一,第二)


但是,如果您在获取有效输出时遇到问题(正如您在许多评论中所说的),您可能希望在php接口之前手动运行脚本,以确定它是否工作。让它简单地打印出变量,如果不能,那么您的ssh exec_命令就有问题。

根据python版本,明智的做法是提到
“a{0}b”。可能需要使用格式(“\n”)
。或者你可以简单地使用
“a%sb”%“\n”
,这将涵盖更多版本。谢谢你的提示,鲍勃。我没有意识到这一点。我在Python2.7和3.3中测试了
{}
-版本,我在这两个版本中都做得很好。第一个选项只打印字母b。@gineraso您使用的是哪种python版本?python版本是Python2.6.6取决于python版本,明智的做法是提及
“a{0}b”。可能需要使用格式(“\n”)
。或者你可以简单地使用
“a%sb”%“\n”
,这将涵盖更多版本。谢谢你的提示,鲍勃。我没有意识到这一点。我在Python2.7和3.3中测试了
{}
-版本,我在这两个版本中都做得很好。第一个选项只打印字母b。@gineraso您使用的是哪个python版本?python版本是Python2.6.6这只会将第二个变量打印到屏幕上。打印出
第一个
,其他什么都没有。是空白的吗?这可能是因为没有任何东西被传送到stdout..它打印出第一个变量:['Red Hat Enterprise Linux Server release 6.5(Santiago)\n']呃,它可能做了一些奇怪的事情,因为它是一个列表。请尝试
打印“%s\n%s%”(第一个[0],第二个)
仅将第二个变量打印到屏幕:[“Red Hat Enterprise Linux Server 6.2版(圣地亚哥)\n']这仅将第二个变量打印到屏幕上。打印出
第一个
而不打印其他内容。是空白的吗?这可能是因为没有任何东西被传送到stdout..它打印出第一个变量:['Red Hat Enterprise Linux Server release 6.5(Santiago)\n']呃,它可能做了一些奇怪的事情,因为它是一个列表。请尝试
打印“%s\n%s%”(第一个[0],第二个)
只打印第二个变量到屏幕:[“Red Hat Enterprise Linux Server 6.2版(圣地亚哥)\n']添加了python-2.6标记,删除了变量标记添加了python-2.6标记,删除了变量标记Bob,您的建议通过执行以下两个操作实现:1。我添加了你的打印声明和2。我注意到您的变量在stdout.readlines中没有像我一样的s。我移除了s,它起作用了。在s中,它没有给我任何输出,错误是:Traceback(最近一次调用last):File“/var/www/html/php/check_version.py”,第18行,在first=stdout中