Thursday 14 September 2017

Python Read Teksti Tiedosto As Binary Optiot


Python-tiedostot O. Tässä luvussa käsitellään kaikkia python-sovelluksen käytettävissä olevia perustoimintoja. Lisätietoja toiminnoista on standardin Python-ohjeissa. Tulostus näytölle. Yksinkertaisin tapa tuottaa tulostus on tulostustila, jossa voit siirtää nollaa tai enemmän lausekkeet erotettuina pilkkujen avulla Tämä funktio muuntaa lausekkeesi, jotka siirrät merkkijonoon ja kirjoittaa tuloksen standardilähtöksi seuraamalla. Tämä tuottaa seuraavaa tulosta standardinäytöllä. Tulostusnäppäimistö Input. Python tarjoaa kaksi sisäänrakennettua toimintoa, joilla voit lukea rivin teksti, joka oletusarvoisesti tulee näppäimistöstä Nämä toiminnot ovat. Rawinput-toiminto. Rawinput-kehotustoiminto lukee yhden rivin tavallisesta syötöstä ja palauttaa sen merkkijonona, joka poistaa jälkimmäisen rivin. Tämä kehottaa sinua syöttämään minkä tahansa merkkijonon Näyttäisi saman merkkijonoa ruudulla Kun kirjoitin Hello Python, sen lähtö on näin. Tulostustoiminto. Tulostustoiminto vastaa raaka-ainetta, paitsi että se olettaa syötteen olevan kelvollinen Python-ilmentymä ja palauttaa arvioidun tuloksen. Tämä tuottaa seuraavaa tulosta syötettyä syöttöä vastaan. Tiedostojen avaaminen ja sulkeminen. Tähän asti olet lukenut ja kirjoittanut vakiotuloon ja - lähetykseen Now , Näemme, miten käyttää todellisia tiedostoja. Python tarjoaa perustoimintoja ja menetelmiä, joita tarvitaan tiedostojen käsittelemiseen oletuksena Voit tehdä suurimman osan tiedoston manipuloinnista tiedostoobjektin avulla. Avaa toiminto. Ennen kuin voit lukea tai kirjoittaa tiedoston, voit Täytyy avata Pythonin sisäänrakennetulla avoimella toiminnolla Tämä toiminto luo tiedostoobjektin, jota hyödynnetään kutsuttaessa siihen liittyviä muita tukimenetelmiä. Tämä on parametrin yksityiskohtia. filename Tiedostonimi-argumentti on merkkijonon arvo, joka sisältää nimen Tiedosto, jota haluat käyttää. accessmode Accessmode määrittää, millä tavalla tiedosto on avattu, eli lukea, kirjoittaa, liittää jne. Täydellinen luettelo mahdollisista arvoista on alla olevassa taulukossa. ional-parametri ja oletustulostustila lukitaan r. buffering Jos puskurointiarvo on asetettu arvoon 0, puskurointia ei tapahdu Jos puskurointiarvo on 1, linjapuskurointi suoritetaan tiedostoa käytettäessä Jos määrität puskurointiarvon kokonaislukuna Suurempi kuin 1, sitten puskurointi suoritetaan ilmoitetulla puskurikoolla Jos negatiivinen, puskurin koko on järjestelmän oletusarvoinen käyttäytyminen. Tässä on luettelo eri tiedoston avausmuodoista.7 Tulo ja tulostus. On useita tapoja Esitellä ohjelmatietojen tuotos voidaan tulostaa ihmisen luettavassa muodossa tai kirjoittaa tiedostolle myöhempää käyttöä varten Tässä luvussa käsitellään joitain mahdollisuuksia.7 1 Fancier Output Formatting. On pitkälle olemme nähneet kaksi tapaa kirjoittaa arvoja Ilmauslausekkeita ja tulostuslauseketta Kolmas tapa käyttää tiedostoobjektien kirjoitusmenetelmää, jonka vakiotulostustiedostoa voidaan viitata Katso lisätietoja kirjastosta Kirjasto-oppaasta. On usein haluat enemmän hallita f Ormatting oman tuotannon kuin yksinkertaisesti tulostus tilaa eritelty arvot On olemassa kaksi tapaa muotoilla tuotos ensimmäinen tapa on tehdä kaikki merkkijono käsittely itse käyttämällä merkkijonojen viipalointi ja concatenation toiminnot voit luoda mitään ulkoasua voit kuvitella Jousityyppejä on joitain menetelmiä Jotka suorittavat hyödyllisiä toimenpiteitä padding-merkkijonoille tiettyyn kolonnin leveyteen näistä keskustellaan pian. Toinen tapa on käyttää menetelmää. Jousimoduuli sisältää Template-luokan, joka tarjoaa vielä toisen tavan korvata arvot merkkijonoiksi. kuinka voit muuntaa arvot merkkijonoiksi Onneksi Pythonilla on tapoja muuntaa mikä tahansa arvo merkkijonoon, siirtää sen repr - tai str funktioihin. str-funktio on tarkoitettu palauttamaan arvoja, jotka ovat melko ihmisluettavia, kun taas repr on tarkoitettu tuottaa esityksiä, joita tulkki voi lukea tai pakottaa SyntaxError, jos ei ole vastaavaa syntaksia Objekteille, joilla ei ole erityistä edustajaa str arvot palauttavat saman arvon kuin repr. Monet arvot, kuten numerot tai rakenteet, kuten luettelot ja sanakirjat, ovat samanlaisia ​​esityksiä käyttäen joko funktiota Kielet ja liukuluvut, etenkin kaksi erillistä esitystä. Tässä on kaksi tapoja kirjoittaa taulukko neliöistä ja kuutioista. Huomaa, että ensimmäisessä esimerkissä lisättiin yksi välilyönti jokaisen sarakkeen välillä tapaan, jolla tulostus toimii, ja se lisää aina välilyöntejä sen argumenttien väliin. Tämä esimerkki osoittaa merkkijonoobjektien menetelmän, joka oikein oikeuttaa tietyn leveyden kentän Pehmittämällä sitä vasemmalla olevilla tiloilla On olemassa samankaltaisia ​​menetelmiä ja nämä menetelmät eivät kirjoita mitään, ne vain palauttavat uuden merkkijonon Jos tulojono on liian pitkä, he don t katkaise sen, mutta palauttavat sen muuttumattomana, - out, mutta se s yleensä parempi kuin vaihtoehto, joka valehtelee arvosta Jos todella haluat katkaisua, voit aina lisätä viipaleen, kuten in. There on toinen menetelmä, joka tyynyn numeron merkkijono vasemmalla nollilla It Ymmärtää plus - ja miinusmerkkejä. Menetelmän peruskäyttäytyminen näyttää tältä. Kiinnikkeet ja niiden sisältämät merkit, joita kutsutaan muotoalueiksi, korvataan menetelmällä siirrettyjen objektien avulla. Lukumääräihin viittaava numero tarkoittaa objektin sijaintia Jos menetelmiä käytetään avainsana-argumentteihin, niiden arvoja kutsutaan käyttämällä argumentin nimeä. Sisältö - ja avainsana-argumentteja voidaan yhdistää mielivaltaisesti.7 2 Tiedosto-objektin palauttaminen ja kirjoittaminen Files. open palauttaa tiedostokohteen ja On yleisimmin käytetty kahden argumentin kanssa avoimen tiedostonimen, tilan. Ensimmäinen argumentti on merkkijono, joka sisältää tiedostonimen. Toinen argumentti on toinen merkkijono, joka sisältää muutamia merkkejä, jotka kuvaavat tapaa, jolla tiedostomuotoa voidaan käyttää, kun tiedosto on vain Lukea, että vain saman nimisen olemassa olevan tiedoston kirjoittaminen poistetaan, ja avautuu tiedosto, joka liittää tiedostoon kirjoitetut tiedot automaattisesti lisätään loppuun r avaa tiedoston sekä lukemista että kirjoittamista varten. Moodi-argumentti on valinnainen r oletetaan, jos se jätetään pois. Windowsissa b liitetään tilaan avaa tiedoston binääritilassa, joten on olemassa myös tiloja, kuten rb wb ja rb. Python Windows tekee eron tekstin ja binääritiedostojen välillä. f-line-merkkejä tekstitiedostoissa muuttuvat automaattisesti, kun tietoja luetaan tai kirjoitetaan. Tämä taustatietojen muutos tiedostotietoihin sopii hyvin ASCII-tekstitiedostoille, mutta se vioittaa JPEG - tai EXE-tiedostomuotoja binääridataa varten. Ole erittäin varovainen Käyttää binaarimoodia tällaisten tiedostojen lukemisessa ja kirjoittamisessa Unix-järjestelmässä se ei sovi lisätä tilaan ab, joten voit käyttää sitä foorumiin itsenäisesti kaikille binääritiedostoille.7 2 1 Tiedostokohteiden menetelmät. Muut esimerkit Tässä osassa oletetaan, että tiedostokohde nimeltä f on jo luodut. Tiedoston sisällön lukeminen, puhelu, joka lukee jonkin tietomäärän ja palauttaa sen merkkijonona, on valinnainen numeerinen argumentti. Kun koko jätetään pois tai negatiivinen, Koko tiedoston sisältö luetaan ja palautetaan se on ongelma, jos tiedosto on kaksi kertaa suurempi kuin koneesi muisti Muussa tapauksessa enintään kokoisia tavuja luetaan ja palautetaan Jos tiedoston loppu on saavutettu, se palauttaa tyhjä merkkijono. lukee yhdestä rivistä tiedostosta rivin merkkijonon n on jäljellä merkkijonon loppuun ja jätetään vain tiedoston viimeiselle riville, jos tiedosto ei pääty uudelle riville Tämä tekee paluuarvosta yksiselitteisen, jos palauttaa tyhjä Merkkijono, tiedoston loppu on saavutettu, kun taas tyhjää riviä on merkitty na-merkkijono, joka sisältää vain yhden uuden rivin. Tiedostojen lukemista varten voit silmukoida tiedostoobjektin päälle Tämä on muistin tehokkuutta, nopeutta ja johtaa siihen Yksinkertainen koodi. Jos haluat lukea kaikki luettelon tiedostot, voit myös käyttää luetteloa f tai. kirjoittaa merkkijonon sisällön tiedostoon palauttamalla Ei mitään. Jos haluat kirjoittaa jotain muuta kuin merkkijonoa, se on muutettava merkkijonaksi ensin. palauttaa kokonaislukuarvon, joka antaa tiedostoobjektin nykyisen sijainnin tiedostossa, mitataan tavuista tiedoston alusta Jos haluat muuttaa tiedoston objektin sijaintia, käytä siitä, missä määrin sijaintia lasketaan lisäämällä siirto viitepisteeseen, jonka vertailupiste valitaan mitä argumenttia A siitä, mikä arvo on 0 toimenpiteitä tiedoston alusta, 1 käyttää nykyistä tiedostoasentoa, ja 2 käyttää tiedoston loppua vertailupisteeksi, mitä voidaan jättää pois ja oletusarvoksi 0, käyttäen tiedoston alkua Kuten viitepiste. Kun olet valmis tiedostoon, soita sulkeaksesi sen ja vapauttamalla avoimen tiedoston ottamat järjestelmäresurssit. Kun olet soittanut yrittää käyttää tiedostoobjektia, se epäonnistuu automaattisesti. On hyvä käytäntö käyttää avainsanan kanssa Kun käsitellään tiedosto-objekteja Tämä on etuna, että tiedosto on suljettu asianmukaisesti sen jälkeen, kun sen sarja on päättynyt, vaikka poikkeus nostettaisiin tavoin. Se on myös paljon lyhyempi kuin kirjallinen vastaava tentti - lopulta blocks. File-objekti s on muutamia muita menetelmiä, kuten sormea ​​ja katkaisu, joita käytetään harvemmin, tutustu kirjasto-oppaaseen täydelliseen oppaan tiedostoobjekteihin.7 2 2 Säilytetään jäsennellyt tiedot json. Stringsin avulla voidaan helposti kirjoittaa ja lukea tiedostosta Numerot ottavat Hieman enemmän vaivaa, koska lukemismenetelmä palauttaa vain merkkijonoja, jotka on siirrettävä sellaiseen funktioon, joka vie merkkijonoa 123 ja palauttaa numeerisen arvon 123. Kun haluat tallentaa monimutkaisempia tietotyyppejä, kuten sisäkkäisiä luetteloita ja sanakirjoja , jäsentäminen ja sarjallistaminen käsin muuttuu monimutkaisemmaksi. Sen sijaan, että käyttäjät käyttäisivät jatkuvasti kirjoitus - ja virheenkorjauskoodia tallentamaan monimutkaisia ​​tietotyyppejä tiedostoihin, Python voi käyttää suosittua tiedonsiirtoformaattia, jota kutsutaan nimellä JSON JavaScript Object Notation. Jsonin standardimoduuli voi ottaa Python-tiedot Hierarkioita ja muuntaa ne merkkijonoiksi, joita kutsutaan sarjoituksiksi. Rivin uudelleenmuokkaaminen merkkijonoesityksestä kutsutaan deserializiksi objekti, joka edustaa kohdetta, on ehkä tallennettu tiedostoon tai dataan tai lähetetty verkkoyhteyden kautta kaukaiselle koneelle. JSON-muotoa käytetään yleisesti nykyaikaisissa sovelluksissa tietojen vaihdon mahdollistamiseksi. Monet ohjelmoijat ovat jo tunnetusti, mikä tekee siitä hyvän vaihtoehdon yhteentoimivuuden kannalta. Jos sinulla on objekti x, voit tarkastella sen JSON-merkkijonoesitystä yksinkertaisella koodirivillä. Toinen vaihtoehto kaatopaikkatoiminnosta, jota kutsutaan nimellä dump, yksinkertaisesti sarjoittaa objektin tiedostoon. Jos f on avattu tiedostoobjekti, voimme tehdä tämän. Jos haluat dekoodata objektin uudelleen, jos f on tiedostoobjekti, joka on avattu lukemaan. Tämä yksinkertainen sarjoitustekniikka pystyy käsittelemään luetteloita ja sanakirjoja, mutta järjestämällä mielivaltaisia ​​luokan esiintymiä JSON vaatii vähän ylimääräistä vaivaa Json-moduulin viite sisältää selityksen tästä. pickle-pickle-moduulista. JSON-sitruunasta riippuen on protokolla, joka sallii serialization o f mielivaltaisesti monimutkaisia ​​Python-objekteja Se on sellainen, että se on spesifistä Pythonille eikä sitä voida käyttää kommunikoimaan muiden kielten kanssa tehtyjen sovellusten kanssa. Se on myös epävarma, koska epävarma lähde voi deserialisoida suolaketjustiedot, voi suorittaa mielivaltaisen koodin, jos tieto on muotoiltu ammattitaitoinen hyökkääjä. Tiedostojen kirjoittaminen ja kirjoittaminen Pythonissa. Kun työskentelet uudelleen Pythonin kanssa, sinun ei tarvitse tuoda kirjastoa lukemaan ja kirjoittamaan tiedostoja. Se käsitellään luonnollisesti kielellä, vaikkakin ainutlaatuisella tavalla. Ensimmäinen asia sinun tarvitsee vain käyttää Pythonin sisäänrakennettua avointa toimintoa tiedostojen objektin saamiseksi. Avoin toiminto avaa tiedoston. Se on helppoa. Kun käytät avointa toimintoa, se palauttaa jotain, jota kutsutaan tiedosto-objektiksi. Tiedostokohteisiin sisältyy menetelmiä ja ominaisuuksia jota voidaan käyttää keräämään tietoja avaamastasi tiedostosta. Niitä voidaan myös käyttää kyseisen tiedoston manipulointiin. Esimerkiksi tiedostoobjektin tilaattribuutti kertoo missä moodissa tiedosto on avattu Ja nimi-attribuutti kertoo tiedoston tiedoston nimi on avattu. Sinun on ymmärrettävä, että tiedosto ja tiedostomalli ovat kaksi täysin erillistä mutta asiaan liittyvää asiaa. Mitä tiedät tiedostona on hieman erilainen Pythonissa. Esimerkiksi Windowsissa, tiedosto voi olla mikä tahansa kohde manipuloida, muokata tai luoda käyttäjän OS Tämä tarkoittaa, että tiedostot voivat olla kuvia, tekstitiedostoja, suoritettavat ja paljon muuta Useimmat tiedostot on järjestetty pitämällä ne yksittäisissä kansioissa. Pythonissa tiedosto on luokiteltu joko tekstiä tai binääriä, ja näiden kahden tiedostotyypin ero on tärkeä. Tekstitiedostot on jäsennelty riveittäin, jossa jokainen rivi sisältää merkkisarjan. Tämä on mitä tunnet koodina tai syntaksina. Jokainen rivi päättyy erityisellä merkki, jota kutsutaan EOL - tai End of Line - merkkiksi Useita eri tyyppejä, mutta yleisimpi on pilkku - tai uusiline-merkki. Se päättyy nykyiseen riviin ja kertoo, että tulkki on alkanut. Voit myös käyttää kääntäjän merkkiä kertoo int Tulkitse, että seuraava merkki jälkikäteen tulee käsitellä uudella rivillä Tämä merkki on hyödyllinen, kun et halua aloittaa uutta riviä itse tekstissä vaan koodissa. Binaaritiedosto on minkä tahansa tyyppinen tiedosto, joka ei ole Tekstitiedosto Binaaritiedostoja voidaan luonteensa vuoksi käsitellä vain sovelluksella, joka tuntee tai ymmärtää tiedoston rakennetta. Toisin sanoen niiden on oltava sovelluksia, jotka voivat lukea ja tulkita binääriä. Avaa toiminto. Jos haluat avata tiedoston kirjoittamiseen tai käyttää Pythonissa, sinun täytyy luottaa sisäänrakennettuun avoimeen funktioon. Kuten yllä selitettiin, avoin palauttaa tiedostoobjektin, joten sitä käytetään useimmiten kahden argumentin avulla. Argumentti on vain arvo, joka on annettu toiminto, joka lähetetään uudelleen, kun soitat niin Jos esimerkiksi ilmoitamme tiedoston nimen testitiedostona, tätä nimeä pidetään argumenttina. Syntaksi avaamaan tiedostoobjektin Pythonissa. Toinen argumentti, see-tila kertoo tulkki ja kehittäjä, millä tavalla t Tiedostoa käytetään. Moodin argumentin sisällyttäminen on valinnainen, koska r: n oletusarvo oletetaan, jos se jätetään pois. R-arvo tarkoittaa lukutilaa, joka on vain yksi monista. Read-tila, jota käytetään, kun tiedosto on vain luettavaa. w Kirjoitustila, jota käytetään muokkaamaan ja kirjoittamaan uutta tietoa tiedostoon, kaikki olemassa olevat samannimiset tiedostot poistetaan, kun tämä tila aktivoituu. a Liitännätila, jota käytetään uusien tietojen lisäämiseen loppuun tiedosto, joka on uusi tieto, muutetaan automaattisesti loppuun. r Erityinen luku - ja kirjoitusmuoto, jota käytetään käsittelemään molempia toimia, kun käsitellään tiedostoa. Joten anna s katsomaan nopeaa esimerkkiä. Tämä paketti avaa tiedoston nimetty työtiedosto kirjoitustilassa, jotta voisimme tehdä muutoksia siihen. Myös tiedostoon tallennetut nykyiset tiedot näytetään tai tulostetaan, jotta meidät voidaan katsella. Kun tämä on tehty, voit siirtyä kutsumaan objektitoiminnot. Kahteen yleisimpiin toimintoihin luetaan ja kirjoitetaan. Luo tekstitiedosto. Saat enemmän tunnetuksi ar kanssa tekstitiedostoja Python, anna luoda omat ja tehdä joitakin ylimääräisiä harjoituksia. Käyttämällä yksinkertainen tekstieditori, anna s luoda tiedosto Voit nimittää sen mitä haluat, ja se on parempi käyttää jotain sinun ll tunnistaa kanssa. For Tämän opetusohjelman tarkoitusta kutsumme kuitenkin. Luo tiedosto ja jätä se tyhjäksi. Jos haluat manipuloida tiedostoa, kirjoita seuraavat Python-ympäristöönsi voit kopioida ja liittää, jos haluat. avaa tekstitiedosto tai tarkastele sitä Pythonin avulla näet vain tekstin, jonka kerrottiin tulkille lisättäväksi. Tekstitiedostojen hakeminen Pythonissa. Pythonissa on useita tapoja lukea tekstitiedosto, ei vain yksi. Jos Sinun täytyy purkaa merkkijono, joka sisältää kaikki tiedoston merkinnät, voit käyttää seuraavaa menetelmää. Täysi-koodi tämän menetelmän toimimiseksi näyttää jotain tällaiselta. Tämän komennon tuotos näyttää kaiken tekstin sisältämän tekstin, Sama teksti kerroimme tulkin lisäämiseksi aiemmin Ei ole mitään tarvetta kirjoittaa sitä o ut, mutta jos sinun täytyy tietää, kaikki näkyy, paitsi kissa linja. Toinen tapa lukea tiedosto on soittaa tietty määrä merkkejä. Esimerkiksi seuraavan koodin tulkki lukee viisi ensimmäistä merkkiä tallennetut tiedot ja palauta se merkkijonona. Huomaa, kuinka käytämme samaa menetelmää, mutta tällä kertaa me määrittelemme prosessien käsittelemien merkkien lukumäärän. Tulostus näyttää näyttäväksi. Jos haluat lukea tiedostorivi riviltä toisin kuin vetämällä koko tiedoston sisältö kerralla sitten käytät readline-funktiota. Miksi käytät jotain tällaista? Sanotaan, että haluat vain nähdä ensimmäisen rivin tiedoston tai kolmannen suoritat readline toiminto niin monta kertaa, jolloin saat etsimäsi tiedot. Joka kerta, kun suoritat menetelmää, se palauttaa merkkijonon, joka sisältää tiedoston yhden tiedoston. Tämä palauttaa tiedoston ensimmäisen rivin, kuten niin. Jos halusimme palauttaa tiedoston vain kolmannen rivin, me käytämme tätä. Mutta mitä jos halusimme palata jokaisen rivin tiedostoon, erikseen erotettu Käytätte samaa toimintoa, vain uudessa muodossa Tämä on nimeltään function. The tuotos saat tästä on. Note miten kukin linja on eroteltu vastaavasti Huomaa, että tämä ei ole ihanteellinen tapa näyttää käyttäjille sisällön tiedostossa Mutta se on hienoa, kun haluat kerätä tietoja henkilökohtaiseen käyttöön kehityksen aikana tai muistutuksen aikana. Valitse tiedostokohteeseen. Kun haluat lukea tai palauttaa kaikki rivit tiedostosta muistiin tehokkaammin ja nopeammin, voit käyttää silmukkamenetelmää Etu tämän menetelmän käyttämisestä on, että siihen liittyvä koodi on yksinkertainen ja helppo lukea. Tämä palaa. paljon yksinkertaisempaa kuin aikaisemmat menetelmät. Tiedostojen kirjoittamismenetelmän käyttäminen. Tiedoston kirjoitusmenetelmän huomautus on se, että se vaatii vain yhden parametrin, joka on merkkijono, jonka haluat kirjoittaa. Tätä menetelmää käytetään lisäämään tietoja tai sisältöä olemassa olevalle tiedostolle Jos haluat aloittaa uuden rivin kirjoittamisen jälkeen tiedoston, voit lisätä EOL-merkin. Onneksi tämä muuttaa nykyistä tiedostoamme sisällyttämään kaksi uutta tekstiriviä Ei ole tarvetta näyttää tuotoksia. Kuljettaessa tiedostoa. Jos olet Kun olet valmis työskentelemään, voit käyttää fh-komentoa lopettaaksesi asioita. Tämä on lähellä tiedostoa kokonaan, lopettaen käytössä olevat resurssit ja vapauttamalla ne järjestelmän käyttöönottamiseksi muualla. On tärkeää ymmärtää, että kun käytät fh menetelmä, kaikki muut yritykset käyttää tiedosto-objektia epäonnistuvat. Huomaa, kuinka olemme käyttäneet tätä useissa esimerkkeissämme vuorovaikutuksen lopettamiseksi tiedoston kanssa. Tämä on hyvä käytäntö. Tiedoston käsitteleminen reaalimaailmassa. Auttaa ymmärtämään paremmin joitain menetelmiä, me aiomme tarjota muutamia esimerkkejä siitä, että niitä käytetään reaalimaailmassa. Voit vapaasti kopioida koodin ja kokeilla sitä itsellesi Python-tulkkeessa. Varmista, että sinulla on nimettyjä tiedostoja, jotka ovat luodut ja käytettävissä ensin. tekstitiedosto. Välilehden käsittely Tekstitiedosto yhdellä rivillä kerrallaan. Kun kirjaudut sisään kehittäjäohjelmistoihin, sinulle luodaan profiili Valitse profiilisi nimi, maa-alue ja yritys näytetään yleisölle ja se seuraa lähettämääsi sisältöä Voit päivittää IBM-tiliäsi milloin tahansa. Kaikki toimitetut tiedot ovat turvassa. Kun kirjaudut sisään DeveloperWorksiin, profiili luodaan sinulle, joten sinun on valittava näyttönimi. Näyttönimi seuraa kehittäjäsi lähettämäsi sisältöä. Valitse näyttönimi on 3-31 merkkiä Näytön nimen on oltava ainutlaatuinen kehittäjäyhteisössä ja sen ei pitäisi olla sähköpostiosoitteesi yksityisyydestä. Kaikki toimitetut tiedot ovat turvallisia. Löydä Python, osa 8 Tietojen lukeminen ja kirjoittaminen Pythonin tulon ja tulostuksen avulla funktionaalisuutta. Robert Brunner, NCSA-tutkija, tähtitieteen apulaisprofessori, Illinoisin yliopisto, Urbana-Champaign. Robert J Brunner on tutkimus Kansalliskeskuksen supertietokoneiden sovellusten tutkija ja Illinoisin yliopiston tähtitieteen assistentti Urbana-Champaign Hän on julkaissut useita kirjoja ja lukuisia artikkeleita ja tutoriaaleja eri aiheista. Voit tavoittaa hänet osoitteessa. Summa Tässä artikkelissa , Opit työskentelemään tiedostojen kanssa Ensinnäkin tarkastelemme yksinkertaista tapa tuottaa tietoja Pythonissa käyttämällä tulostuslauseketta ja sitten tutustua tiedostokohteeseen, jota Python-ohjelmat käyttävät tietojen lukemiseen ja kirjoittamiseen tiedostoon. Jonka avulla tiedosto voidaan avata, ja artikkeli päättyy näyttämällä, kuinka lukea ja kirjoittaa binaaritiedostoa. Päivämäärä 03 tammikuu 2006 Level Intermediate. Useiden artikkeleiden Discover Python-sarjassa oppitit Python-tietokannoista Ja jotkin konttityyppityypit, kuten tuploryhmä ja luettelo Muut artikkelit keskustelivat Python-kielen ehdollisista ja silmukkatekijöistä ja miten ne toimivat yhdessä konttityyppityypin kanssa s yksinkertaistaa ohjelmointitehtäviä Viimeksi kirjoitettuihin perusvaiheisiin kuuluu tietojen lukeminen ja tietojen kirjoittaminen tiedostoon Kun olet lukenut tämän artikkelin, voit tarkistaa tämän taidon oppimisen tehtävälistalta. Tämän sarjan kautta voit kirjoitustiedostoa, joka kirjoittaa oletusarvoisesti lausekkeen merkkijonoksi näytölle tai konsoli-ikkunalle Tämä on osoitettu luettelossa 1, joka toistaa ensimmäisen Hello, World Python - ohjelman muutamalla pienemmällä tweaksilla. kirjoittaminen on helppoa tulostusilmoituksen kanssa Ensinnäkin esimerkki tuottaa yksinkertaisen merkkijonon. Sitten se luo ja tuottaa merkkijonon muotoustekniikkaa käyttäen muodostetun yhdisteen merkkijono. Sen jälkeen kuitenkin asiat muuttuvat koodin aiemmasta versiosta. Seuraava rivi luo Tiedostoobjektiivi, joka välittää nimen ja aw-merkin, jotta voit kirjoittaa tiedostoon. Tämän jälkeen käytät muokatun tulostustekstin - jossa on kaksi suurempia symboleja, jonka jälkeen tiedoston objektilla oleva muuttuja - ja w rite sama merkkijono s Tällä kertaa tietoja ei kuitenkaan näytetä näytöllä Luonnollinen kysymys on, mistä tiedot menivät Ja mitä tämä tiedostokohde on. Ensimmäinen kysymys on helppo vastata Etsi tiedosto ja näytä sen sisältö, kuten alla on. Kuten näet, tiedot on kirjoitettu tiedostolle täsmälleen sellaisina kuin ne olisi kirjoitettu ruutuun aikaisemmin. Nyt huomaa viimeinen rivi luettelossa 1, joka kutsuu läheisen menetelmän tiedostokohteeseen. Tämä on tärkeä Python-ohjelmissa, koska tiedostojen syöttö ja tulostus ovat oletuksena puskuroituja tietoja ei ole kirjoitettu heti kun kirjoitat tulostusosoitetta, mutta kirjoitetaan vain paloiksi. Yksinkertaisimmat mekanismit kertoa Pythonin tietojen kirjoittamiseksi tiedostoon ovat nimenomaisesti Soita läheiseen tapaan. Tiedostoobjekti on perusmekanismi, jolla toimitaan tietokoneesi tiedostojen kanssa Voit käyttää tiedostoobjektia lukemaan tietoja, kirjoittamaan tietoja, liittämään tietoja tiedostoon ja toimimaan joko binaarisessa tai tekstipohjaisessa tiedostossa data. The yksinkertaisin tekniikka lear Lisätietoja tiedostoobjekteista on pyytää apua, kuten on esitetty Listing 2.Listing 2 Ohjeiden saaminen tiedostokohteelle. Ohjetoiminnon avulla tiedostokohteen kanssa työskentely on yksinkertaista. Voit luoda tiedostokohteen käyttämällä tiedostorakentajaa tai avoin menetelmä, joka on alias tiedostojen rakentajalle Toinen parametri, joka on valinnainen, määrittää, miten tiedostoa käytetään. r Oletus tarkoittaa, että haluat lukea tietoja tiedostosta. W tarkoittaa, että haluat kirjoittaa tietoja tiedostoon, katkaisemalla edelliset sisällöt. a osoittaa, että haluat kirjoittaa tietoja tiedostoon ja liittää sen loppuun. r kertoo, että lukitset ja kirjoitat minkä tahansa aikaisempien tietojen poistamiseen. r a kertoo, että luet lukemasi ja kirjoitat tiedoston liittämiseen. b merkitsee, että lukitset tai kirjoitat binääritietoja. Ensimmäinen koodiluettelo tässä artikkelissa kirjoitti tiedot tiedostoon Nyt Listing 3 näyttää kuinka lukea nämä tiedot Python-ohjelmaan ja jäsentää tiedoston sisältö. Listaus 3 Tietojen lukeminen tiedostosta. Voit lukea tiedot luomalla ensin sopivan tiedostokohteen - tässä tapauksessa tiedoston avaamisessa - ja lukemalla sisällön lukumenetelmällä. Tämä menetelmä lukee koko tiedoston merkkijonoon, joka tulostetaan konsoli tässä ohjelmassa Toinen puhelu lukemismenetelmään, jossa yrität määrittää arvoa str muuttujaan, palauttaa tyhjän merkkijonon Tämä tapahtuu, koska ensimmäinen luku luki koko tiedoston Kun yrität lukea sisältöä uudelleen, tiedoston lopussa, joten mitään ei voida lukea. Tämä ongelma on myös helppo ratkaista. Kerro tiedostokohteelle, että palataan tiedoston alkuun. Teet sen etsintämenetelmän kautta, joka ottaa yhden parametrin, joka ilmaisee jossa tiedostossa haluat aloittaa lukemisen o Esimerkiksi r kirjoittaminen, nolla osoittaa tiedoston alkua Hakutapa mahdollistaa entistä monimutkaisempia operaatioita, mutta ne voivat olla vaarallisia Nyt päästäkää kiinni yksinkertaisesta käytöstä. Nyt, kun palaat tiedoston alkuun, voi lukea tiedoston sisällön merkkijonomuuttujaksi ja jäsentää sen sisältöä asianmukaisesti Huomaa, että tiedoston rivit erotetaan uudella rivillä tai rivillä olevilla merkillä Jos yrität soittaa split-menetelmään merkkijonoosi, se jakautuu Välilyönnillä, kuten tilaa Jos haluat jakaa rivit uuden rivin luonteen perusteella, sinun on määritettävä nimenomaisesti uusi rivin merkki. Tämän jälkeen voit jakaa merkkijonoa ja iteroitua tiedoston viivojen yli silmukalle. Se näyttää siltä, Paljon työtä vain lukemaan ja käsittelemään yhden rivin tiedostosta Python tekee yksinkertaisista asioista helppoa, joten olet todennäköisesti miettimättä, onko mitään pikakuvakkeita käytettävissä tähän tehtävään Kuten on esitetty luettelossa 4, vastaus on kyllä. Listing 4 Lukeminen ja jäsentäminen lines. L isting 4 näyttää kolme tekniikkaa tekstitiedostojen rivien lukemiseen ja jäsentämiseen Ensin avaat tiedoston ja määrität sen muuttujaan Sitten soitat readlines-menetelmään, joka lukee koko tiedoston muistiin ja jakaa sisällön merkkijonoon s Silmukan silmukan iteroituu merkkijonoon s, tulostetaan ne yksi kerrallaan. Toinen silmukalle yksinkertaistaa tätä prosessia hieman käyttämällä implisiittistä muuttujaa, joka ei ole nimenomaisesti luotu tiedostoobjektille, jonka avaat tiedosto ja lukea sen sisällön kerralla, tuottaen saman tuloksen kuin ensimmäinen, eksplisiittinen esimerkki. Viimeinen esimerkki yksinkertaistaa asioita vieläkin ja osoittaa kyvyksi toistaa suoraan tiedostokohteeseen, että tämä on Pythonin uusi ominaisuus, ei välttämättä toimi tietokoneessa Tässä tapauksessa luodaan implisiittinen tiedostoobjekti, ja Python tekee loput, joten voit toistaa kaikki tiedoston rivit. Joskus kuitenkin haluat hienompaan hallintaan, kun r e tietojen lukeminen tiedostosta Tässä tapauksessa sinun tulee käyttää lukujohtamismenetelmää, kuten on esitetty luettelossa 5. Tässä esimerkissä kuvataan, miten siirrytään tiedostosta, joka lukee yhtä riviä kerrallaan tai siirtää nimenomaisesti tiedoston sijainnin ilmaisinta hakuominaisuuden avulla Ensimmäistä askelta tiedostorivin kautta rivillä käyttäen lukujohtamismenetelmää Kun saavutat tiedoston loppuun, rivinlatausmenetelmä palauttaa tyhjän jonoon Yritetään jatkaa lukemista tiedoston loppupuolella tällä tavoin ei aiheuta virheitä, mutta palauttaa tyhjään merkkijonoon. Voit sitten siirtyä takaisin tiedoston alkuun ja lukea toista riviä. Kerroin-menetelmä näyttää missä olet tiedostossa, joka pitäisi olla ensimmäisen tekstirivin jälkeen - tässä tapauksessa 13-merkkisessä sijainnissa. tietoa, voit siirtää parametrin lukemis - tai lukulamenetelmään sen määrittämiseksi, kuinka monta merkkiä on luettu Tässä esimerkissä parametrilla 17 on lukumäärän luku, joka luetaan tiedostosta. Lukemenetelmä, lukee kuitenkin määrätyn merkkien lukumäärän ja jatkaa lukemista kyseisen rivin loppuun asti. Tässä esimerkissä se lukee ensimmäisen ja toisen tekstiriviä. Toistaiseksi esimerkit ovat keskittyneet tietojen lukemiseen, ei tietojen kirjoittamiseen Kuten kohdassa 6 on esitetty , mutta kirjoitus on helppoa, kun tiedät perusasiat työskentelystä tiedostoobjektin kanssa. Jos haluat kirjoittaa tietoja tiedostoon, sinun on ensin luotava tiedostoobjekti. Mutta tässä tapauksessa sinun on määritettävä, että haluat kirjoittaa tiedoston w-tilan merkinnän käyttäminen Tässä esimerkissä kirjoitat mydata-luettelon sisällön tiedostoon, sulje tiedosto ja avaa tiedosto uudelleen, jotta voit lukea sisällön. Usein haluat kuitenkin lukea ja kirjoittaa tiedosto samanaikaisesti, joten tämän esimerkin seuraava osa avataan tiedoston uudelleen r-tilan avulla. Koska voit kirjoittaa tiedostoon, ei lisätä, tiedosto katkaistaan. Ensin kirjoitat mydata-luettelon sisällön Tiedosto, siirrä sitten tiedostoosoitin tiedoston alkuun ja lue tiedosto E sisältö Tämä esimerkki sulkee tiedoston ja avaa sen uudelleen lukemis - ja lisäystilaa käyttäen. Kuten esimerkkikoodi osoittaa, tiedoston sisältö on nyt tulosta kahdesta kirjoitustoiminnasta, jota teksti toistetaan. Kaikki edelliset esimerkit ovat käsitelleet tekstuaalisia tai merkkitietoihin Olet kirjoittanut ja lukenut merkkijonot s Joissakin tilanteissa - esimerkiksi silloin, kun olet työskennellyt kokonaislukujen tai pakattujen tiedostojen kanssa - sinun on kyettävä lukemaan ja kirjoittamaan binääritietoja. Voit helposti tehdä sen pythonilla liittää b tiedostomuotoon, kun luot tiedosto-objektin, kuten on listattu 7.Listaus 7 Binaaritietojen käsittely. Tässä esimerkissä luodaan sopiva tiedostoobjekti ja kirjoita binäärimerkit ASCII-arvoilla 50 - 69 You muokata puhelun luomaa kokonaislukua merkkijonoon chr-menetelmällä Kun olet kirjoittanut kaikki tiedot, suljet tiedoston ja avaat sen uudelleen lukemista varten uudelleen käyttämällä binääritilan lippua. Tiedoston lukeminen osoittaa, että Et selvästi kirjoittanut kokonaislukuja tiedoston sijaan, kirjoitit niiden hahmojen arvot. Kun olet lukenut ja kirjoittanut binääritietoja, sinun on oltava varovainen, koska eri alustoilla tallennetaan binääritietoja eri tavoin. Jos tarvitset binääridataa, se parasta käyttää sopivaa kohdetta Python-kirjastosta tai kolmannen osapuolen kehittäjältä. Tässä artikkelissa kerrotaan, miten tietoja voidaan lukea ja kirjoittaa Python-ohjelmaan. Yleensä prosessi on yksinkertainen Luo sopiva tiedostoobjekti, sitten lue tai kirjoittaa tarvittaessa Tarvitset kuitenkin huolta katkaisusta, kun kirjoitustilaa käytetään luomaan tiedostoobjekti tiedoston kirjoittamiseen tiedostolle Jos haluat liittää tiedoston tiedostoon, käytä liitännätilaa luodessasi tiedostoobjektia. Lue kaikki DeveloperWorks Discover Python - sarjan artikkelit. Kun sinulla on toimiva Python-tulkki, Python-opetusohjelma on loistava paikka oppia kielen oppimiseen. Käy kehittäjän Open Source - vyöhykkeellä tietoa, työkaluja ja projektipäivityksiä, jotka auttavat sinua kehittämään avoimen lähdekoodin tekniikoita ja käyttämään niitä IBM: n tuotteiden kanssa. Ota tuotteita ja teknologioita käyttöön. Ota uusi avoimen lähdekoodin kehitysprojekti IBM: n kokeiluversion avulla, joka on ladattavissa tai DVD-levyllä. developerWorks-yhteisöä osallistumalla developerWorks-blogeihin. Robert J Brunner on Kansalliskeskuksen supertietokoneiden sovellusten tutkija ja Illinois-yliopiston tähtitieteen apulaisprofessori Urbana-Champaignissa. Hän on julkaissut useita kirjoja ja lukuisia artikkeleita ja tutoriaaleja useita aiheita Voit tavoittaa hänet osoitteessa. Report abuse. Report abuse. DeveloperWorks Kirjaudu sisään. Valitse näyttönimi.16 2 io Core-työkaluja streamien kanssa työskentelemiseen.16 2 1 Yleiskatsaus io-moduuli tarjoaa Pythonin päätoimipaikat kauppaan erilaisilla IO-tyypeillä IO-teksti IO-binääri IO ja raaka IO ovat kolme päätyyppiä. Nämä ovat yleisiä luokkia, ja erilaisia ​​tukikauppoja voidaan käyttää r jokainen niistä Näihin luokkiin kuuluvaa konkreettista kohdetta kutsutaan tiedostoobjektiksi. Muita yleisiä termejä ovat virran ja tiedostojen kaltainen objekti. Luokastaan ​​riippumatta kullakin konkreettisella stream-objektilla on myös erilaisia ​​kykyjä, jotka voivat olla vain luku-, vain kirjoittaa tai kirjoittaa ja kirjoittaa Se voi myös sallia mielivaltaisen satunnaisen pääsyn etsimiseen eteenpäin tai taaksepäin mihin tahansa paikkaan tai vain peräkkäiseen pääsyyn esim. pistorasian tai putken tapauksessa. Kaikki virrat ovat tarkkoja tietoja Heille Esimerkiksi boolivirtauksen kirjoitusmenetelmän str-objekti nostaa TypeError-arvoa Joten antaa tavutobjektin tekstivirran kirjoitusmenetelmälle. Versio 3: n muutokset 3 IOErrorin nostamiseen tähtäävät operaatiot nostavat nyt OSErroria koska IOError On nyt alias OSError.16 2 1 1 Teksti I O. Text IO odottaa ja tuottaa str objektia Tämä tarkoittaa sitä, että aina, kun varmuuskopio tallennetaan luonnostaan ​​tavuista, kuten tiedoston tapauksessa, koodataan ja dekoodataan tietoja tehdään läpinäkyvä ntly sekä valinnaisen käännöksen alustan ominaisiksi uudelle rivin merkiksi. Helpoin tapa luoda tekstivirta on avoin valinnaisesti määrittelemällä koodaus. In-muisti tekstivirta on saatavilla myös StringIO objekteina. Tekstivirta API on kuvattu yksityiskohtaisesti TextIOBase.16 2 1 2 Binaarinen I O. Binary IO kutsutaan myös puskuroitu IO odottaa tavun kaltaisia ​​esineitä ja tuottaa tavutobjektit Ei koodausta, dekoodausta tai uudelle rivin kääntämistä suoritetaan Tämä virtamallia voidaan käyttää kaikenlaisiin ei - - teksti-dataa ja myös silloin, kun halutaan manuaalinen ohjaus tekstidatan käsittelystä. Helpoin tapa luoda binäärivirta on avattu b-tilassa. Muisti-binääri-virrat ovat myös käytettävissä BytesIO-objekteina. Binary stream-API on kuvattu yksityiskohtaisesti puskuroidunIOBase-asiakirjoissa. Muut kirjastomoduulit voivat tarjota lisää tapoja tekstin tai binäärivirtojen luomiseen. Katso esimerkiksi.16 2 1 3 Raw I O. Raw IO, jota kutsutaan myös puskuroimattomaksi IO: ksi, käytetään yleensä binääri - ja tekstivirtojen matalan tason rakennusaikana on harvoin hyödyllistä käsitellä suoraan raakavirtaa käyttäjäkoodista. Voit kuitenkin luoda raakavirran avaamalla tiedoston binäärisessä tilassa, jossa puskurointi ei ole käytössä. Raaka-aineen API on Joka on kuvattu yksityiskohtaisesti RawioBase.16: n 2 dokumenteissa. 2 2 Korkean tason moduulirajapinta. Moduulin puskuroitujen IO-luokkien käyttämä oletuspuskuri, joka sisältää puskuroidut IO-luokat, käyttää tiedostoa s blksize, joka saadaan mahdollisuuksien mukaan. Tämä on alias sisäänrakennettu auki function. exception io BlockingIOError. Tämä on yhteensopivuus alias sisäänrakennetulle BlockingIOError exception. exception io UnsupportedOperation. An poikkeus perii OSError ja ValueError, joka nousee, kun tukematonta toimintaa kutsutaan stream.16 2 2 1 Muisti streams. It on myös mahdollista käyttää str tai byte-kaltaista kohdetta tiedostoina sekä lukemiseen että kirjoittamiseen Stringoille voidaan käyttää kuten tekstimuodossa avattava tiedosto BytesIO voidaan käyttää kuten binäärisessä tiedostossa tilassa Molemmat tarjoavat täydellisiä luku-kirjoitusominaisuuksia, joilla on satunnainen pääsy.16 2 3 Luokan hierarkia. IO-virtojen toteutus on järjestetty luokkien hierarkiksi Ensimmäiset abstraktit perusluokat ABC, joita käytetään erilaisten virtojen luokkien, betoniluokkien Standardipohjaisten toteutusten tarjoaminen. Abstraktit perusluokat tarjoavat myös joidenkin menetelmien oletusstrategioita konkreettisten virtausluokkien toteuttamisen helpottamiseksi. Esimerkiksi BufferedIOBase tarjoaa lukemattoman ja readline-linjan optimaaliset toteutukset. IO-hierarkian yläosassa on abstrakti perusluokka IOBase Se määrittää perusrajapinnan streamiin Huomaa kuitenkin, että lukemisen ja kirjoittamisen välillä ei ole eroja, mutta toteutukset saavat nostaa UnsupportedOperation - ohjelmaa, jos ne eivät tue tietyn toiminnan. RawIOBase ABC laajentaa IOBasea. Se käsittelee lukemista ja tavujen kirjoittaminen streamiin FileIO alaluokkien RawioBase antaa rajapinnan tiedostoihin koneen tiedostojärjestelmä. BufferedIOBase ABC käsittelee puskurointia raaka-tavuavirrassa RawioBase. Sen alaluokat, BufferedWriter BufferedReader ja BufferedRWPair-puskurivirrat, jotka ovat luettavia, kirjoitettavia ja sekä luettavissa että kirjoitettavissa. BufferedRandom tarjoaa puskuroidun rajapinnan satunnaisiin pääsevirtoihin. Toinen BufferedIOBase-alaluokka , BytesIO on muisti-tavujen virta. TextObase ABC, joka on toinen IOBase-alaluokka, käsittelee virtoja, joiden tavut edustavat tekstiä ja käsittelee koodauksen ja dekoodauksen tekstiprofiiliin, joka laajentaa sitä. Stream BufferedIOBase Lopuksi StringIO on muistiin tallennettu teksti streamille. Argo-nimet eivät ole osa määritelmää, ja vain avoimen argumentteja on tarkoitus käyttää avainsana-argumentteina. Seuraavassa taulukossa on yhteenveto io-moduulin tarjoamista ABC-numeroista. 16 2 3 1 IO-perusluokat. Kaikkien IO-luokkien abstraktit perusluokat, jotka toimivat tavujen virralla Ei ole julkista rakennetta Tämä luokka tarjoaa tyhjiä abstrakteja toteutuksia monille menetelmille, jotka johdetut luokat voivat ohittaa selektiivisesti oletus toteutukset edustavat tiedostoa, jota ei voida lukea, kirjoittaa tai etsiä. Vaikka IOBase ei julista lukea readinto tai kirjoittaa, koska niiden allekirjoitukset vaihtelevat, toteutukset ja asiakkaat pitävät näitä menetelmiä osana käyttöliittymää Myös toteutukset voivat nostaa ValueError - tai UnsupportedOperation - toiminnon, jos toimintoja, joita he eivät tue, kutsutaan. Perustietyyppi, jota käytetään binaaritiedoista, joka luetaan tai kirjoitetaan tiedostoon, on tavua Muut tavut tavalliset kohteet hyväksytään Kuten menetelmän argumentteja myös joissakin tapauksissa, kuten readinto kirjoitusobjektin, kuten bytearray vaaditaan, teksti IO-luokat toimivat str tiedot. Note, että kutsutaan mitä tahansa menetelmää jopa tiedustelut suljetun stream on undefined toteutukset voivat nostaa ValueError tässä tapauksessa. IOBase ja sen alaluokat tukee iteraattoriprotokollaa, mikä tarkoittaa, että IOBase-objekti voidaan iteroida viivojen tuottamiseksi rivissä Viivat määritellään hieman eri tavoin riippuen siitä, onko virta bittivirta, joka tuottaa tavuja tai tekstivirtaa, joka tuottaa merkkijonoja? Lue alla oleva viitataulu. AZBase on myös kontekstin hallinta ja tukee siksi lausetta. Tässä esimerkissä tiedosto on suljettu Sen jälkeen, kun lausuntosarjojen loppupää on valmis, vaikka poikkeus ilmestyykin. IAbase tarjoaa nämä tiedotattribuutit ja - menetelmät. Sulje ja sulje tämä virta. Tällä menetelmällä ei ole vaikutusta, jos tiedosto on jo suljettu. Kun tiedosto on suljettu, kaikki tiedoston toiminnot, esim. Lukeminen tai kirjoittaminen nostaa ValueError. Vuonna mukavuutta, se voi kutsua tätä menetelmää useammin kuin kerran vain ensimmäisellä puhelulla, mutta sillä on vaikutus. True, jos virta on suljettu. Palauta taustalla oleva tiedostojen kuvaaja kokonaisluku stream jos se on olemassa OSError nousee, jos IO-objekti ei käytä tiedostojen kuvaajaa. Valitse virtauksen kirjoituspuskureita, jos sellainen on. Tämä ei tee mitään vain luku-ja ei-blocking streams. Retur N Todellinen, jos virta on vuorovaikutteinen eli kytketty terminaaliin tty-laitteeseen. Palaa True, jos virtaa voidaan lukea Jos false-luku leviää OSError. Read ja palauttaa rivin riviltä Jos koko on määritetty, korkeinta koon tavua lukea. Linjan terminaattori on aina bn tekstitiedostojen binaaritiedostoille, avautuva uusiline-argumentti voidaan käyttää valitun linjan terminaattorin tunnistamiseen. Voidaan määritellä rivinvihjeen luettavien ja palautettavien rivien luettelo. riviä ei lueta enää riviä luettaessa, jos kaikkien rivien kokoinen koko tavujen merkkijonoina ylittää vihjeen. Huomaa, että se on jo mahdollista toistaa tiedostokohteissa käyttämällä linjaa tiedostoon soittamatta. Muuta virran sijaintia annettuun tavuun offset offset tulkitaan suhteessa siihen asentoon, jonka perusteella siitä, mistä oletusarvo siitä, mistä on SEEKSET Arvot, mistä ovat. SEEKSET tai 0 aloitusvirran oletussiirtymä olisi nolla tai positiivinen. SEEKCUR tai 1 virran virtausasento pois asetettu voi olla negatiivinen. SEEKEND tai 2 lopussa offset on yleensä negatiivinen. Vaihda uusi absoluuttinen positio. Uusi versio 3 1 SEEK vakiot. Uusi versiossa 3 3 Jotkin käyttöjärjestelmät voivat tukea ylimääräisiä arvoja, kuten tai Kelvolliset arvot Tiedoston voi olla riippuvainen siitä, että se on avoin teksti - tai binaarimuodossa. Palaa True, jos stream tukee satunnaista yhteyttä. Jos väärä etsintä kertoo ja katkaisee, nousee OSError. Palauta nykyinen virran paikka. Palauta virta tietylle koolle tavuina tai Nykyinen asema, jos kokoa ei ole määritetty Nykyinen virran paikka ei ole muuttunut Tämä koon muuttaminen voi laajentaa tai pienentää nykyistä tiedostokokoa Uuden tiedostoalueen sisältö riippuu useimmissa järjestelmissä alustasta, mutta ylimääräiset tavut ovat nollatäytteisiä Uusi tiedostokoko palautetaan. Versio 3: n versioon 5 Windows nyt nollaa tiedostoja laajennettaessa. Palaa True, jos stream tukee kirjoittamista. Jos väärä kirjoittaminen ja katkaisu nostavat OSError. Write-luettelo linjoista streamiin Lin e-erottimia ei ole lisätty, joten jokaiselle riville on tavallista, että rivin erotin on lopussa. Esitä objektin tuhoamista varten IOBase antaa tämän menetelmän oletusarvon toteutuksen, joka kutsuu instanssin läheltä. IO Se perii IOBase-järjestelmästä Ei ole julkista konstruktoria. Rajapari binääri IO tarjoaa tyypillisesti alhaisen tason pääsyn taustalla olevaan OS-laitteeseen tai API: han, eikä yritä sulkea sitä korkean tason primitiiveihin, vaan se jätetään puskuroituun IO: han ja tekstiin IO, joka on kuvattu myöhemmin tässä sivussa. Lisäksi IOBase RawIOBase - ohjelmiston attribuuttien ja menetelmien lisäksi on olemassa seuraavat menetelmät. Tutustu objektin koon tavuihin ja palauta ne Tavoitteena on, että jos koko on määrittelemätön tai -1, readall kutsutaan muuten, vain yksi järjestelmäpuhelu on koskaan tehty Pienemmät kuin koon tavut voidaan palauttaa, jos käyttöjärjestelmäpuhelu palaa pienemmäksi kuin koon tavut. Jos 0 tavua palautetaan, ja koko ei ole 0, se merkitsee tiedoston loppua Jos objekti on estotilassa and no bytes are available, None is returned. Read and return all the bytes from the stream until EOF, using multiple calls to the stream if necessary. Read bytes into a pre-allocated, writable bytes-like object b and return the number of bytes read If the object is in non-blocking mode and no bytes are available, None is returned. Write the given bytes-like object b to the underlying raw stream, and return the number of bytes written This can be less than the length of b in bytes, depending on specifics of the underlying raw stream, and especially if it is in non-blocking mode None is returned if the raw stream is set not to block and no single byte could be readily written to it The caller may release or mutate b after this method returns, so the implementation should only access b during the method call. class io BufferedIOBase. Base class for binary streams that support some kind of buffering It inherits IOBase There is no public constructor. The main difference with RawIOBase is that m ethods read readinto and write will try respectively to read as much input as requested or to consume all given output, at the expense of making perhaps more than one system call. In addition, those methods can raise BlockingIOError if the underlying raw stream is in non-blocking mode and cannot take or give enough data unlike their RawIOBase counterparts, they will never return None. Besides, the read method does not have a default implementation that defers to readinto. A typical BufferedIOBase implementation should not inherit from a RawIOBase implementation, but wrap one, like BufferedWriter and BufferedReader do. BufferedIOBase provides or overrides these methods and attribute in addition to those from IOBase. The underlying raw stream a RawIOBase instance that BufferedIOBase deals with This is not part of the BufferedIOBase API and may not exist on some implementations. Separate the underlying raw stream from the buffer and return it. After the raw stream has been detached, the buffer i s in an unusable state. Some buffers, like BytesIO do not have the concept of a single raw stream to return from this method They raise UnsupportedOperation. New in version 3 1.Read and return up to size bytes If the argument is omitted, None or negative, data is read and returned until EOF is reached An empty bytes object is returned if the stream is already at EOF. If the argument is positive, and the underlying raw stream is not interactive, multiple raw reads may be issued to satisfy the byte count unless EOF is reached first But for interactive raw streams, at most one raw read will be issued, and a short result does not imply that EOF is imminent. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. Read and return up to size bytes, with at most one call to the underlying raw stream s read or readinto method This can be useful if you are implementing your own buffering on top of a BufferedIOBase object. Read bytes in to a pre-allocated, writable bytes-like object b and return the number of bytes read. Like read multiple reads may be issued to the underlying raw stream, unless the latter is interactive. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. Read bytes into a pre-allocated, writable bytes-like object b using at most one call to the underlying raw stream s read or readinto method Return the number of bytes read. A BlockingIOError is raised if the underlying raw stream is in non blocking-mode, and has no data available at the moment. New in version 3 5.Write the given bytes-like object b and return the number of bytes written always equal to the length of b in bytes, since if the write fails an OSError will be raised Depending on the actual implementation, these bytes may be readily written to the underlying stream, or held in a buffer for performance and latency reasons. When in non-blocking mode, a BlockingIOError is raise d if the data needed to be written to the raw stream but it couldn t accept all the data without blocking. The caller may release or mutate b after this method returns, so the implementation should only access b during the method call.16 2 3 2 Raw File I O. FileIO represents an OS-level file containing bytes data It implements the RawIOBase interface and therefore the IOBase interface, too. The name can be one of two things. a character string or bytes object representing the path to the file which will be opened In this case closefd must be True the default otherwise an error will be raised. an integer representing the number of an existing OS-level file descriptor to which the resulting FileIO object will give access When the FileIO object is closed this fd will be closed as well, unless closefd is set to False. The mode can be r w x or a for reading default , writing, exclusive creation or appending The file will be created if it doesn t exist when opened for writing or appending it will be truncated when opened for writing FileExistsError will be raised if it already exists when opened for creating Opening a file for creating implies writing, so this mode behaves in a similar way to w Add a to the mode to allow simultaneous reading and writing. The read when called with a positive argument , readinto and write methods on this class will only make one system call. A custom opener can be used by passing a callable as opener The underlying file descriptor for the file object is then obtained by calling opener with name flags opener must return an open file descriptor passing as opener results in functionality similar to passing None. See the open built-in function for examples on using the opener parameter. Changed in version 3 3 The opener parameter was added The x mode was added. Changed in version 3 4 The file is now non-inheritable. In addition to the attributes and methods from IOBase and RawIOBase FileIO provides the following data attributes. The mode as given in the con structor. The file name This is the file descriptor of the file when no name is given in the constructor.16 2 3 3 Buffered Streams. Buffered I O streams provide a higher-level interface to an I O device than raw I O does. A stream implementation using an in-memory bytes buffer It inherits BufferedIOBase The buffer is discarded when the close method is called. The optional argument initialbytes is a bytes-like object that contains initial data. BytesIO provides or overrides these methods in addition to those from BufferedIOBase and IOBase. Return a readable and writable view over the contents of the buffer without copying them Also, mutating the view will transparently update the contents of the buffer. As long as the view exists, the BytesIO object cannot be resized or closed. New in version 3 2.Return bytes containing the entire contents of the buffer. In BytesIO this is the same as read. In BytesIO this is the same as readinto. New in version 3 5.class io BufferedReader raw buffersize DEFAULTBU FFERSIZE. A buffer providing higher-level access to a readable, sequential RawIOBase object It inherits BufferedIOBase When reading data from this object, a larger amount of data may be requested from the underlying raw stream, and kept in an internal buffer The buffered data can then be returned directly on subsequent reads. The constructor creates a BufferedReader for the given readable raw stream and buffersize If buffersize is omitted, DEFAULTBUFFERSIZE is used. BufferedReader provides or overrides these methods in addition to those from BufferedIOBase and IOBase. Return bytes from the stream without advancing the position At most one single read on the raw stream is done to satisfy the call The number of bytes returned may be less or more than requested. Read and return size bytes, or if size is not given or negative, until EOF or if the read call would block in non-blocking mode. Read and return up to size bytes with only one call on the raw stream If at least one byte is buffered, onl y buffered bytes are returned Otherwise, one raw stream read call is made. class io BufferedWriter raw buffersize DEFAULTBUFFERSIZE. A buffer providing higher-level access to a writeable, sequential RawIOBase object It inherits BufferedIOBase When writing to this object, data is normally placed into an internal buffer The buffer will be written out to the underlying RawIOBase object under various conditions, including. when the buffer gets too small for all pending data. when flush is called. when a seek is requested for BufferedRandom objects. when the BufferedWriter object is closed or destroyed. The constructor creates a BufferedWriter for the given writeable raw stream If the buffersize is not given, it defaults to DEFAULTBUFFERSIZE. BufferedWriter provides or overrides these methods in addition to those from BufferedIOBase and IOBase. Force bytes held in the buffer into the raw stream A BlockingIOError should be raised if the raw stream blocks. Write the bytes-like object b and return the n umber of bytes written When in non-blocking mode, a BlockingIOError is raised if the buffer needs to be written out but the raw stream blocks. class io BufferedRandom raw buffersize DEFAULTBUFFERSIZE. A buffered interface to random access streams It inherits BufferedReader and BufferedWriter and further supports seek and tell functionality. The constructor creates a reader and writer for a seekable raw stream, given in the first argument If the buffersize is omitted it defaults to DEFAULTBUFFERSIZE. class io BufferedRWPair reader writer buffersize DEFAULTBUFFERSIZE. A buffered I O object combining two unidirectional RawIOBase objects one readable, the other writeable into a single bidirectional endpoint It inherits BufferedIOBase. reader and writer are RawIOBase objects that are readable and writeable respectively If the buffersize is omitted it defaults to DEFAULTBUFFERSIZE. BufferedRWPair does not attempt to synchronize accesses to its underlying raw streams You should not pass it the same object as reader and writer use BufferedRandom instead.16 2 3 4 Text I O. Base class for text streams This class provides a character and line based interface to stream I O There is no readinto method because Python s character strings are immutable It inherits IOBase There is no public constructor. TextIOBase provides or overrides these data attributes and methods in addition to those from IOBase. The name of the encoding used to decode the stream s bytes into strings, and to encode strings into bytes. The error setting of the decoder or encoder. A string, a tuple of strings, or None indicating the newlines translated so far Depending on the implementation and the initial constructor flags, this may not be available. The underlying binary buffer a BufferedIOBase instance that TextIOBase deals with This is not part of the TextIOBase API and may not exist in some implementations. Separate the underlying binary buffer from the TextIOBase and return it. After the underlying buffer has been detach ed, the TextIOBase is in an unusable state. Some TextIOBase implementations, like StringIO may not have the concept of an underlying buffer and calling this method will raise UnsupportedOperation. New in version 3 1.Read and return at most size characters from the stream as a single str If size is negative or None reads until EOF. Read until newline or EOF and return a single str If the stream is already at EOF, an empty string is returned. If size is specified, at most size characters will be read. Change the stream position to the given offset Behaviour depends on the whence parameter The default value for whence is SEEKSET. SEEKSET or 0 seek from the start of the stream the default offset must either be a number returned by or zero Any other offset value produces undefined behaviour. SEEKCUR or 1 seek to the current position offset must be zero, which is a no-operation all other values are unsupported. SEEKEND or 2 seek to the end of the stream offset must be zero all other values are unsu pported. Return the new absolute position as an opaque number. New in version 3 1 The SEEK constants. Return the current stream position as an opaque number The number does not usually represent a number of bytes in the underlying binary storage. Write the string s to the stream and return the number of characters written. class io TextIOWrapper buffer encoding None errors None newline None linebuffering False writethrough False. A buffered text stream over a BufferedIOBase binary stream It inherits TextIOBase. encoding gives the name of the encoding that the stream will be decoded or encoded with It defaults to. errors is an optional string that specifies how encoding and decoding errors are to be handled Pass strict to raise a ValueError exception if there is an encoding error the default of None has the same effect , or pass ignore to ignore errors Note that ignoring encoding errors can lead to data loss replace causes a replacement marker such as to be inserted where there is malformed dat a backslashreplace causes malformed data to be replaced by a backslashed escape sequence When writing, xmlcharrefreplace replace with the appropriate XML character reference or namereplace replace with N escape sequences can be used Any other error handling name that has been registered with is also valid. newline controls how line endings are handled It can be None n r and r n It works as follows. When reading input from the stream, if newline is None universal newlines mode is enabled Lines in the input can end in n r or r n and these are translated into n before being returned to the caller If it is universal newlines mode is enabled, but line endings are returned to the caller untranslated If it has any of the other legal values, input lines are only terminated by the given string, and the line ending is returned to the caller untranslated. When writing output to the stream, if newline is None any n characters written are translated to the system default line separator, If newline is or n no translation takes place If newline is any of the other legal values, any n characters written are translated to the given string. If linebuffering is True flush is implied when a call to write contains a newline character. If writethrough is True calls to write are guaranteed not to be buffered any data written on the TextIOWrapper object is immediately handled to its underlying binary buffer. Changed in version 3 3 The writethrough argument has been added. Changed in version 3 3 The default encoding is now instead of Don t change temporary the locale encoding using use the current locale encoding instead of the user preferred encoding. TextIOWrapper provides one attribute in addition to those of TextIOBase and its parents. Whether line buffering is enabled. An in-memory stream for text I O The text buffer is discarded when the close method is called. The initial value of the buffer can be set by providing initialvalue If newline translation is enabled, newlines will be encoded as if b y write The stream is positioned at the start of the buffer. The newline argument works like that of TextIOWrapper The default is to consider only n characters as ends of lines and to do no newline translation If newline is set to None newlines are written as n on all platforms, but universal newline decoding is still performed when reading. StringIO provides this method in addition to those from TextIOBase and its parents. Return a str containing the entire contents of the buffer Newlines are decoded as if by read although the stream position is not changed. class io IncrementalNewlineDecoder.16 2 4 Performance. This section discusses the performance of the provided concrete I O implementations.16 2 4 1 Binary I O. By reading and writing only large chunks of data even when the user asks for a single byte, buffered I O hides any inefficiency in calling and executing the operating system s unbuffered I O routines The gain depends on the OS and the kind of I O which is performed For example, o n some modern OSes such as Linux, unbuffered disk I O can be as fast as buffered I O The bottom line, however, is that buffered I O offers predictable performance regardless of the platform and the backing device Therefore, it is almost always preferable to use buffered I O rather than unbuffered I O for binary data.16 2 4 2 Text I O. Text I O over a binary storage such as a file is significantly slower than binary I O over the same storage, because it requires conversions between unicode and binary data using a character codec This can become noticeable handling huge amounts of text data like large log files Also, and are both quite slow due to the reconstruction algorithm used. StringIO however, is a native in-memory unicode container and will exhibit similar speed to BytesIO.16 2 4 3 Multi-threading. FileIO objects are thread-safe to the extent that the operating system calls such as read 2 under Unix they wrap are thread-safe too. Binary buffered objects instances of BufferedReader Buf feredWriter BufferedRandom and BufferedRWPair protect their internal structures using a lock it is therefore safe to call them from multiple threads at once. TextIOWrapper objects are not thread-safe.16 2 4 4 Reentrancy. Binary buffered objects instances of BufferedReader BufferedWriter BufferedRandom and BufferedRWPair are not reentrant While reentrant calls will not happen in normal situations, they can arise from doing I O in a signal handler If a thread tries to re-enter a buffered object which it is already accessing, a RuntimeError is raised Note this doesn t prohibit a different thread from entering the buffered object. The above implicitly extends to text files, since the open function will wrap a buffered object inside a TextIOWrapper This includes standard streams and therefore affects the built-in function print as well.

No comments:

Post a Comment