Přikazový řádek – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Přikazový řádek – Python – Fórum – Programujte.comPřikazový řádek – Python – Fórum – Programujte.com

 

easy0
Newbie
26. 4. 2006   #1
-
0
-

uz sem nevěděl co bych... tak sem zkusil udelat neco podobnyho jako prikazovy řádek:

 # -*- coding: cp1250 -*-

import os
print "vita vas Easyho konzole"
name = os.name
name2 = ""
if name == "nt":
name2 = "Windows"
rootDir = "c:"
elif name == "posix":
name2 = "Unix"
rootDir = "/"
else:
name2 = "neznamy"
print "vas operacni system je ", name2
print
napoveda = """---------NAPOVEDA---------n
Zobrazeni aktualniho adresare (a)
Vypis obsahu aktualniho adresare (v)
Prechod na korenovy adresar (k)
Prechod na jiny adresar (p)
Cteni .txt (e)
Help (help)
Ukonceni (q)
"""
print napoveda
print
def fce(x):
name = os.name
name2 = ""
if name == "nt":
rootDir = "c:"
else:
rootDir = "/"
##########
if x == "a":
print os.getcwd()
elif x == "v":
for i in os.listdir(os.curdir):
print i
#elif x == "k":
# os.path.join(rootDir,)
elif x == "p":
u = raw_input()
os.path.join(u)
#return os.path.join(u, "")
elif x == "e":
print "vyberte soubor"
i = raw_input()
soubor = open(i, "r")
for radek in soubor:
print radek
soubor.close()
elif x == "help":
print napoveda
elif x == "q":
return 0


f = 1

while f == 1:
n = raw_input()
fce(n)
if fce(n) == 0:
print "konec"
break

#print fce(n)

ale potřeboval bych poradit u přechodů na kořenovy a jiny adresar a pak jeste nechapu proc se mi tiskne dvakrat fce(n) kdyz tu druhou mam v podmince if.
děkuji za odpovědi.

Nahlásit jako SPAM
IP: ...–
Farundel0
Super člen
26. 4. 2006   #2
-
0
-

proc se mi tiskne dvakrat fce(n) kdyz tu druhou mam v podmince if


To je jednoduche. To, ze je ta funkce podruhe v ifu neznamena, ze se neprovede.
1) zmacknes treba "a" a ono se ti ulozi do promenne n
2) provede se funkce fce(n), ktera vypise aktualni pracovni adresar
3) provede se podminka tak, ze se funkce fce(n) __znovu__ spusti a otestuje se jeji navratova hodnota
Reseni je jednoduche - nechej volani funkce jenom v tom ifu...pred nim ji vymaz

Nahlásit jako SPAM
IP: ...–
To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
geon0
Grafoman
26. 4. 2006   #3
-
0
-

[i]nechapu proc se mi tiskne dvakrat fce(n) kdyz tu druhou mam v podmince if. [/i]
Protoze i kdyz je v podmince, tak se provad?. Jak jinak by se zjistila vystupni hodnota? To bys tu prvn? nesm?l tiksnout, ale ukl?dat do prom?nn? a v ifu testovat tu prom?nou. P??padn? pak vytisknout. Nebo taky takhle:



while 1:
n = raw_input()
if fce(n) == 0:
print "konec"
break


a nebo taky takhle :-) :


n="nic"
while fce(n) == 1:
n = raw_input()

print "konec"

[i] P?echod na jin? adres??[/i]
Pokud ve funkci zalo??? jakoukoliv prom?nnou, tato ?ije jen po dobu uvnit? funkce. Jakmile funkci opust??, prom?nn? um?r? (p?est?v? existovat, je hozena do ko?e). Pokud chce? zachovat prom?nn? z vnit?ku funkce, mus?? je bud globalizovat (FUJ, nen? to program?torsky ?ist?, p?esto, nebo pr?v? proto, ?e to hodn? pou??vaj? pr?v? za??te?n?ci) a nebo l?pe: tuto prom?nnou vracet pomoc? return a pak ji znovu do funkce dost?vat jako parametr (v tv?m p??pad? ji? druh?) - a tady m??e? vyu??t s velkou noblesou tzv. [url=http://vik.sh.cvut.cz/~tnt/python/tut/node6.html#SECTION006700000000000000000]implicitn? hodnoty parametr?[/url]

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
easy0
Newbie
26. 4. 2006   #4
-
0
-

Dekuji dekuji, jeste to musim projit a použít ;) asi to bude to ono. ;)

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
26. 4. 2006   #5
-
0
-

Jinak je tam ještě pár takových podivností:
1. to s tím rootDir tam je dvakrát - myslím že ve funkci to je na nic
2. tady:
elif x == "p":
u = raw_input()
os.path.join(u)

bych asi dal něco do závorek raw_input("Zadej adresar") nebo tak něco a os.path.join(u) je tam proč? Jestli myslíš, že adresář bude zadán relativně - tak by v závorce mělo být (aktAdr,u) aktAdr zjistis snad os.path.abspath(os.curdir) nebo os.chdir(u) - je třeba si to rozmyslet, jak to budeš přesně chtít.

Jinak bych pro jistotu na úplně konec fce dal return 1.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
easy0
Newbie
28. 4. 2006   #6
-
0
-

tak jeste pokracuju, ale tady je funkcni kod, kdyby nekdo nahodou chtel kouknout...:

# -*- coding: cp1250 -*-

import os
print "vita vas Easyho konzole"
name = os.name
name2 = ""
if name == "nt":
name2 = "Windows"
rootDir = "c:"
elif name == "posix":
name2 = "Unix"
rootDir = "/"
else:
name2 = "neznamy"
print "Vas operacni system je ", name2
print
napoveda = """---------NAPOVEDA---------n
Zobrazeni aktualniho adresare (a)
Vypis obsahu aktualniho adresare (v)
Prechod na korenovy adresar (k)
Prechod na jiny adresar (p)
Cteni .txt (e)
Help (help)
Ukonceni (q)
"""
print napoveda
print
def fce(x):
if x == "a":
print os.getcwd()
elif x == "v":
for i in os.listdir(os.curdir):
print i
elif x == "k":
os.chdir(rootDir)
elif x == "p":
u = raw_input("zadejte absolutni cestu (bez C: nebo / ): ")
cesta = os.path.join(rootDir, u)
return os.chdir(cesta)
elif x == "e":
print "vyberte soubor:"
i = raw_input()
soubor = open(i, "r")
for radek in soubor:
print radek
soubor.close()
elif x == "help":
print napoveda
elif x == "q":
return 0


f = 1

while f == 1:
n = raw_input()

if fce(n) == 0:
print "konec"
break



nakonec sem zjistil ze problem byl v
 

cesta = os.path.join(rootDir, u)
return os.chdir(cesta)

chybělo mi tam os.chdir sakra... ted uz to funguje dik

Nahlásit jako SPAM
IP: ...–
easy0
Newbie
28. 4. 2006   #7
-
0
-

geon napsal:

Jinak je tam ještě pár takových podivností:
1. to s tím rootDir tam je dvakrát - myslím že ve funkci to je na nic
2. tady:
elif x == "p":
u = raw_input()
os.path.join(u)

bych asi dal něco do závorek raw_input("Zadej adresar") nebo tak něco a os.path.join(u) je tam proč? Jestli myslíš, že adresář bude zadán relativní - tak by v závorce mělo být (aktAdr,u) aktAdr zjistis snad os.path.abspath(os.curdir) nebo os.chdir(u) - je třeba si to rozmyslet, jak to budeš přesně chtít.

Jinak bych pro jistotu na úplný konec fce dal return 1.


no jo díky toho rootDir sem si nevšiml, jak sem tam resil tu f-ci, tak mi to uplne vypadlo... zatim se musej cesty psat absolutne, pozdeji to chci relativne s .. a . atd....

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 3 hosté

Podobná vlákna

QT příkazový řádek — založil Fic

Příkazový řádek — založil radvis

C++- jak na prikazovy radek — založil klaveska

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý