🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #27954

Re: zestawienie zbiorcze

#27954
From: Daniel Mróz
Date: Mon, 28 Mar 2011 15:06
71 lines
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-mail
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>

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