我是 python 编程的新手。我有这个问题:我有一个文本文件列表(压缩和未压缩),我需要: - 连接到服务器并打开它们 - 打开文件后,我需要获取他的内容并将其传递给另一个我写的python函数
def readLogs (fileName):
f = open (fileName, 'r')
inStream = f.read()
counter = 0
inStream = re.split('\n', inStream) # Create a 'list of lines'
out = "" # Will contain the output
logInConst = "" # log In Construction
curLine = "" # Line that I am working on
for nextLine in inStream:
logInConst += curLine
curLine = nextLine
# check if it is a start of a new log && check if the previous log is 'ready'
if newLogRegExp.match(curLine) and logInConst != "":
counter = counter + 1
out = logInConst
logInConst = ""
yield out
yield logInConst + curLine
def checkFile (regExp, fileName):
generatore = readLogs(fileName)
listOfMatches=[]
for i in generatore: #I'm now cycling through the logs
# regExp must be a COMPILE regular expression
if regExp.search(i):
listOfMatches.append(i)
return listOfMatches
为了详细说明这些文件中包含的信息。该函数的目的是使用 3 行仅在 1 行中写入存储在这些文件中的日志......该函数在从我的本地计算机读取的文件上运行良好,但我无法弄清楚如何连接到远程服务器和创建这些单行日志而不将每个文件的内容存储到一个字符串中,然后使用该字符串......我用来连接到远程机器的命令是:
connection_out = Popen(['ssh', retList[0], 'cd '+retList[2]+'; cat'+fileName], stdout=PIPE).communicate()[0]
retList[0] 和 retList[2] 是 user@remote 和我必须访问的文件夹名称
提前感谢大家!
更新:
我的问题是我必须先建立一个 ssh 连接:
pr1=Popen(['ssh', 'siatc@lgssp101', '*~/XYZ/AAAAA/log_archive/00/MSG_090308_162648.gz*' ], stdout=PIPE).communicate()[0]
我需要打开的所有文件都存储在一个列表中,fileList[],其中一部分是压缩的(.gz),一部分只是文本文件!我已经尝试了你在 bot 之前展示的所有程序,但没有任何效果......我想我必须修改 Popen 函数的第三个参数,但我不知道该怎么做!有没有人可以帮助我???