Article View: pl.comp.lang.python
Article #27954Re: zestawienie zbiorcze
From: Daniel Mróz
Date: Mon, 28 Mar 2011 15:06
Date: Mon, 28 Mar 2011 15:06
71 lines
3348 bytes
3348 bytes
On 26.03.2011, Mateuszzz <km_wawaUSUNMNIE@vp.pl> wrote:
> zbiorcze = folder_serw + zmienna + ".txt"
Nie wiem skąd masz "zmienna", ale jeśli "z zewnątrz", to bym na Twoim
miejscu sprawdził czy nie zawiera czegoś, co pozwoli pójść tam, gdzie
nie powinno ("..").
> if not os.path.isfile(zbiorcze):
> shutil.copy(plik2, zbiorcze)
> else:
> #otwieramy pliki i wczytujemy zawartosc
> plik_obecny=open(plik2,'r')
Brak obsługi błędu otwarcia pliku.
> kolumna=[]
> for linia in plik_obecny:
> m=linia.split(" ")
> element=m[2]
Nie obsługujesz wyjątku. Jeśli linia będzie zawierała mniej niż 3 elementy
rozdzielone spacjami, Twój skrypt wyleci.
> element=str(element)
element już chyba jest stringiem. Nie?
> kolumna.append(element)
A nie prościej(?):
kolumna.append(m[2])
Jednej zmiennej i dwóch instrukcji mniej.
> plik_obecny.close()
Ponoć teraz "with" jest "the right way".
> plik_uzup=open(zbiorcze,'r')
Brak obsługi błędu otwarcia pliku.
> zawartosc=""
> ##
> # WIEM ZE TO CO JEST DALEJ JEST TROCHE BEZ SENSU - jednak wstawiajac w #
> w obrebie petli instrukcje n+=1 otrzymywalem komunikat, ze chce
> #####pobrac wartosc spoza zakresu
No to daj w tym miejscu:
print(kolumna)
i zobacz dlaczego Ci krzyczy.
Taki błąd dostaniesz też w przypadku, gdy plik_uzup zawiera więcej linii
niż plik_obecny. Sprawdziłeś? Nie masz nawet obsługi takiego przypadku
(i sensownej obsługi błędów w ogólności).
> n=0
> for linia in plik_uzup:
> dodawany_element=kolumna[n]
> dodawany_element=str(dodawany_element)
> linia=str(linia)
Po co Ci te dwie ostatnie linie?
> linia.rstrip()
To można wrzucić do generatora w "for"
> zawartosc=zawartosc+linia+" "+dodawany_element+"\n"
Czytelniej:
zawartosc += "{0} {1}\n".format(linia, dodawany_element)
Pozdrawiam
Beorn
--
Daniel 'Beorn' Mróz <beorn@alpha.pl> http://127.0.0.1/beorn
[GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---]
[O- M- V! PS+ PE++ Y+ PGP++ t- 5 X R !tv b+ DI D++ G++ e h*]
[ r++ y+ ]
Technical Details
Message-ID:
<slrnip18v9.dpj.beorn@pino.cyberdeck.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!nntp.aster.pl!newsread.aster.pl!not-for-mailReferences:
<4d8846a1$0$2438$65785112@news.neostrada.pl> <4d889f2d$0$2455$65785112@news.neostrada.pl> <4d8e2065$0$2456$65785112@news.neostrada.pl> <iml981$9ut$1@polsl.pl> <4d8e2bcd$0$2490$65785112@news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!nntp.aster.pl!newsread.aster.pl!not-for-mail From: Daniel Mróz <beorn@alpha.pl> Newsgroups: pl.comp.lang.python Subject: Re: zestawienie zbiorcze Date: Mon, 28 Mar 2011 15:06:17 +0000 (UTC) Organization: A tak se walimy młotkami d:-/ Lines: 71 Message-ID: <slrnip18v9.dpj.beorn@pino.cyberdeck.pl> References: <4d8846a1$0$2438$65785112@news.neostrada.pl> <4d889f2d$0$2455$65785112@news.neostrada.pl> <4d8e2065$0$2456$65785112@news.neostrada.pl> <iml981$9ut$1@polsl.pl> <4d8e2bcd$0$2490$65785112@news.neostrada.pl> NNTP-Posting-Host: 62.121.127.190 Mime-Version: 1.0 X-Trace: newsread.aster.pl 1301324777 9835 62.121.127.190 (28 Mar 2011 15:06:17 GMT) X-Complaints-To: abuse@aster.pl NNTP-Posting-Date: Mon, 28 Mar 2011 15:06:17 +0000 (UTC) User-Agent: slrn/0.9.8.1pl2.1 (Linux) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit