Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : python, os.chdir



rugaaaaa
04-04-2010, 16:58
Hallo,

irgendwie mag mich os.chdir nicht...


mein Programm sieht ungefähr wie folgt aus,

d.h. ich erzeuge mir dynamisch (per Schleife) bestimmte Strings, die dem
Verzeichnisnamen entsprechen, die ich als workverzeichnis verwenden will (will
in dem verzeichnis dann extern gewisse Shell-Skripte aufrufen...)




#!/usr/bin/python

import os

startwert = 7
endwert = 15

def ausfuehren(startwert,endwert) :
for k in range(startwert,endwert+1) :
if k<10 :
zahlA = ['0',str(k)]
zahlB = "".join(zahlA)
else :
zahlB = str(k)

#os.chdir(os.path.join(os.getcwd(),

zeile1A = ["pc",zahlB,"_statistik"]
zeile1B = "".join(zeile1A)
zeil3 = os.path.join(os.getcwd(),zeile1B)

print zeil3

os.chdir(os.path.join(os.getcwd(),zeile1B))



./prg02.py
/home/ruga/pc07_statistik
hallo
/home/ruga/pc07_statistik/pc08_statistik
hallo
Traceback (most recent call last):
File "/home/ruga/prg02.py", line 62, in <module>
ausfuehren(startwert,endwert)
File "/home/ruga/prg02.py", line 28, in ausfuehren
os.chdir(os.path.join(os.getcwd(),zeile1B))
OSError: [Errno 2] No such file or directory: '/home/ruga/pc07_statistik/pc08_statistik'

Wo liegt hier mein Denkfehler?

Ruga

OpOs
14-04-2010, 23:13
hallo,

ich nehme mal an die verzeichnisse heissen

/home/ruga/pc07_statistik
/home/ruga/pc08_statistik
/home/ruga/pc09_statistik
usw.

dein problem ist, dass du beim ersten schleifendurchlauf (wenn k = 7), in das verzeichnis "/home/ruga/pc07_statistik" wechselst, was auch klappt. im naechsten durchlauf (k = 8), liefert dir os.getcwd() auch genau diesen wert und du haengst dann noch "pc08_statistik" hintendran, das ergibt also "/home/ruga/pc07_statistik/pc08_statistik" und dieses verzeichnis existiert nicht.

du musst am ende der schleife das working directory immer wieder nach "/home/ruga" aendern, damit du fuer jeden schleifendurchlauf den gleichen ausgangspunkt hast. auf den meisten systemen wird das uebergeordnete verzeichniss mit ".." bezeichnet. du musst also nach "/home/ruga/pc07_statistik/.." wechseln, was gleichbedeutend ist mit "/home/ruga"

fueg als letzte zeile in deiner schleife mal diese zeile ein:


os.chdir (os.path.join (os.getcwd (), ".."))


das ist ist zwar nicht die schoenste loesung, aber sie funktioniert...

rugaaaaa
15-04-2010, 05:37
Hallo,

ja stimmt, vielen Dank

Ruga