Paras vastaus
Kuinka tyhjennät tekstitiedoston Pythonissa?
Useimmilla kielillä riittää, että avaat tiedoston kirjoitusta varten ja suljet sen. Käytettävä idiomi on:
with open(theFile, “w”) as fp:
pass
Tämän pitäisi jättää 0-pituinen tiedosto taakse.
Kysymys kuuluu, miksi haluat tehdä tämän? Jos haluat tiedoston poistuvan, poista se (katso os.remove). Jos aiot kirjoittaa sen liikaa, sinun ei tarvitse tyhjentää sitä ensin. Avaa se uuden sisällön kirjoittamista ja kirjoittamista varten.
Vastaus
Pythonin vanhoissa versioissa teksti- ja binaaritiedostojen välinen ero liittyi siihen, miten Python käsitteli rivierottimia (enimmäkseen vain asiaankuuluvia) MS-DOS / Windows -käyttöjärjestelmään, joka käsittelee tekstitiedostoja (käyttäen CR / LF-merkkipareja rivinvaihtoon) ja vanhoja Macintosh-järjestelmän (pre-MacOS X) tekstitiedostoja (joissa käytettiin CR: tä, kelkan palautusta (\ r) tai ASCII 0x0D) LF: n (rivinvaihto, \ n, ASCII 0x0A, jota käytetään Unix-, Linux- ja MacOS X -käyttöjärjestelmissä) sijasta.
Python2-tulkit havaitsivat tämän yleensä automaattisesti, ja se oli vain ajoittain ylitettävä. Kaikki tiedostot voidaan kuitenkin käsitellä yksinkertaisina tavuvirtoina (jotka olivat vaihdettavissa 8-bittisiin ASCII-merkkeihin) Python 2: ssa ja sitä vanhemmissa. Lippu / b kohdassa open () tiedostojen binaariseksi käsittelemiseksi tarkoitti vain rivin loppuja.
Python 3: n kanssa tarina on monimutkaisempi. Mutta yksinkertainen asia on, että tekstitiedostot ovat oletusarvoisia ja niitä käsitellään joissakin Unicoden koodaus (esimerkiksi UTF-8 tai US-ASCII). Jos haluat käsitellä tiedostoja binaarisena, lisäät silti ”b” -merkin tila-argumenttiin avaamalla tiedostoa. Mutta nyt kaikki tiedoston toiminnot sisältävät tavua objekteja eikä merkkijonoja. Joten lukee paluu tavut ja tiedot on lähetettävä tavuina soitettaessa .write () -menetelmä (ja niin edelleen).
Huomaa nämä esimerkit:
# Default:
textfile = open(‘somefile.txt’)
## read-only, text, encoding depends on platform by likely UTF-8 or US-ASCII
# Binary:
data = open(‘somedata.bin’, ‘rb’)
## read-only, bytes() data
Tila voi olla myös w tai w + kirjoitettaville tekstitiedostoille (valinnaisella luku- / kirjoitusvalinnalla lisäämällä +) tai a tai a + vain liite . b -lipun voi lisätä mihin tahansa tavuihin (binaariin) tekstin sijaan.
Huomaa: voit avata tekstitiedostoja binääritila. Python vain käsittelee niitä tavuvirroina eikä tekstinä, ja sinun on kutsuttava nimenomaisesti merkkijonon muunnosfunktioita sisältöön (nimenomaisilla koodausargumenteilla) käyttääksesi niitä merkkijonoina.
Tässä on opas lisätietoja: Py Luton 3.X-merkkijonojen opetusohjelma, kirjoittanut Mark Lutz