Liste enthält keine Strings

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
denis_77
User
Beiträge: 1
Registriert: Freitag 27. Januar 2012, 11:17

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??
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.
Antworten