/ / Musel niekto niekedy „vyvažovať“ svoje hľadače Python? Bug? - python, súbor-io

Niekedy musel niekto "opätovne vyvážiť" svojho vyhľadávača súborov Python? Bug? - python, súbor-io

Vo veľmi škaredom scenári som konečne fungoval, tak som vlastne musel znovu hľadať hľadača

f.seek(0, 1)

predtým, ako by funkcia f.write () zapísala čokoľvek, čo "uviazlo". Myslím, že som sa snažil toľko spôsobov, ako sa dostať okolo, ale jediná vec, ktorá fungovala, bola vyššie uvedená jednoduchá línia.

Samozrejme som skontroloval ukazovateľ s f.tell () pred a po zápise - identický!

Používam Python 2.7.3 pre tento skript. Môže to byť chyba? Cítim sa unavený z používania, ako sa zdá ... no .. príliš divné.

odpovede:

2 pre odpoveď č. 1

Znie to divne. Jediné vysvetlenie, ktoré príde na myseľ, je, že neberiete do úvahy účinky bufferingu.

Konkrétne, keď niečo napíšete do súboru, najprv sa zapíše do internej vyrovnávacej pamäte. Obsah vyrovnávacej pamäte sa zapíše do súboru, keď

  • tlmivý roztok je plný; alebo
  • súbor je zatvorený; alebo
  • f.flush() sa nazýva; alebo
  • f.seek() sa nazýva.

Preto, ak by ste mali preskúmať obsah súboru po jeho napísaní ale skôr, ako sa stane niečo z vyššie uvedenéhočasto by ste neuviedli novo napísané údaje.