Seite 1 von 1

Liste enthält keine Strings

Verfasst: Freitag 27. Januar 2012, 11:46
von denis_77
Hallo,

ich habe folgendes Problem: Mittels eines Skriptes möchte ich schauen ob folgender Job auf dem Rechner läuft 'DYN:optimierung_'
Hierfür habe ich folgendes Skript geschrieben:

Code: Alles auswählen

#!usr/bin/python

import time, os, sys
from subprocess import Popen, PIPE

target_DYN = 'DYN:optimierung_'
##--------------------------------------------------------------------------------------------------		
	
def get_pid_dyn(target):
	while True:		
	
		qstat  = Popen(['qstat','-a'],shell=False,stdout=PIPE)
		output = list(qstat.stdout)		
		print output
		print "\n------------------------------------------------\n"
		print output[5]	
		print type(output[5])	
		print "\n------------------------------------------------\n"	
		
		#print target in output
		for x in output:
			words = x.split()
			print words
			
			if target in words:
				#print 'YES'
				get_pid = words[0].split('.')
				pid = get_pid[0]
				print pid
				#time.sleep(10)
			else:
				sys.exit('KEIN DYN JOB vorhanden')		
		
			
	
##--------------------------------------------------------------------------------------------------	

## M A I N
		
print target_DYN
while get_pid_dyn(target_DYN) == True:
	print "DYN  Laeuft"
	time.sleep(5)
	
##
Die Liste "output" enthält folgende Einträge:

Code: Alles auswählen

['\n', 'stu-cr101.tecosim.com: \n', "                                                                         Req'd  Req'd   Elap\n", 'Job ID               Username Queue    Jobname          SessID NDS   TSK Memory Time  S Time\n', '-------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - -----\n', '6245.stu-cr101.t     sess     default  HW:hst            24157     1   2   10gb   --  R 00:56\n', '6254.stu-cr101.t     clem     default  DYN:Ebenes_Targe  13463     1   8 8560mb   --  R 00:08\n']
Nun möchte ich alle whitespaces aus der Liste raushaben und speichere den Rest in words, jedoch ist diese Liste nun leer:
[]
Wo ist denn der Fehler??

Re: Liste enthält keine Strings

Verfasst: Freitag 27. Januar 2012, 12:00
von BlackJack
@denis_77: Natürlich ist `words` leer. Schau mal was passiert, wenn Du den ersten Eintrag von `output` „splittest”:

Code: Alles auswählen

In [34]: '\n'.split()
Out[34]: []
Hättest Du da jetzt etwas anderes erwartet!? Wenn ja, warum?

Du solltest einen Schritt zurück machen und erst einmal die Grundlagen lernen. Zum Beispiel das Tutorial in der Python-Dokumentation durcharbeiten. Wenn man sich den Quelltext anschaut, hast Du weder Schleifen noch Funktion wirklich verstanden.