#-*- coding: utf-8 -*-u"""Różnorodne użyteczne funkcjeTen program jest częścią książki "Zanurkuj w Pythonie", podręcznikao Pythonie dla doświadczonych programistów. Najnowszą wersję możnaznaleźć tu: http://pl.wikibooks.org/wiki/Zanurkuj_w_Pythonie.Program ten został oparty na przykładach zawartych w książce"Dive Into Python", a dostępnej stąd: http://www.diveintopython.org."""__author__="Mark Pilgrim (mark@diveintopython.org)"__version__="$Revision: 1.3 $"__date__="$Date: 2004/05/05 21:57:20 $"__copyright__="Copyright (c) 2001 Mark Pilgrim"__license__="Python"defopenAnything(source):u"""URI, nazwa pliku lub łańcuch znaków --> strumień Funkcja ta pozwala zdefiniować parser, który przyjmuje dowolne źródło wejścia (URL, ścieżkę do lokalnego pliku lub znajdującego się gdzieś w sieci, czy też bieżące dane w postaci łańcucha znaków) i traktuje je w odpowiedni sposób. Zwracany obiekt będzie zawierał wszystkie podstawowe metody odczytu (read, readline, readlines). Kiedy już obiekt nie będzie potrzebny, należy go zamknąć za pomocą metody .close(). Przykłady: >>> from xml.dom import minidom >>> sock = openAnything("http://localhost/kant.xml") >>> doc = minidom.parse(sock) >>> sock.close() >>> sock = openAnything("c:\\inetpub\\wwwroot\\kant.xml") >>> doc = minidom.parse(sock) >>> sock.close() >>> sock = openAnything("<ref id='conjunction'><text>and</text><text>or</text></ref>") >>> doc = minidom.parse(sock) >>> sock.close() """ifhasattr(source,"read"):returnsourceifsource=="-":importsysreturnsys.stdin# próbuje otworzyć za pomocą modułu urllib (gdy source jest plikiem dostępnym z http, ftp lub URL-a)importurllibtry:returnurllib.urlopen(source)except(IOError,OSError):pass# próbuje otworzyć za pomocą wbudowanej funkcji open (jeśli source jest ścieżką do lokalnego pliku)try:returnopen(source)except(IOError,OSError):pass# traktuje source jako łańcuch znakówimportStringIOreturnStringIO.StringIO(str(source))