Dodaj wiersz do istniejącego pliku w Pythonie
Muszę dodać jedną linię do pierwszej linii pliku tekstowego i wygląda na to, że jedyne dostępne dla mnie opcje to więcej linii kodu, niż spodziewałbym się po Pythonie. Coś w tym stylu:
f = open('filename','r')
temp = f.read()
f.close()f = open('filename', 'w')
f.write("#testfirstline")f.write(temp)
f.close()
Czy nie ma łatwiejszego sposobu? Ponadto widzę ten przykład z dwoma uchwytami częściej niż otwieranie jednego uchwytu do odczytu i zapisu („r +”) - dlaczego tak jest?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
10 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
Podstawową prawdą, z którą się tutaj spotykasz, jest to, że zwykle nie możesz dodać danych do istniejącej płaskiej struktury bez nadpisania całej struktury. Dzieje się tak niezależnie od języka.
Istnieją sposoby, aby zachować uchwyt pliku lub uczynić kod mniej czytelnym, z których wiele jest podanych w innych odpowiedziach, ale żaden z nich nie zmienia podstawowej operacji: musisz odczytać istniejący plik, a następnie zapisać dane, które chcesz dodać, a następnie istniejące dane, które czytasz.
Zapisz uchwyt pliku za wszelką cenę, ale nie próbuj pakować operacji w jak najmniejszą liczbę wierszy kodu. W rzeczywistości nigdy nie szukaj najmniejszej liczby wierszy kodu - to zaciemnianie, a nie programowanie.
Anonimowy użytkownik
Potwierdzenie od:
Zamiast python2:
Python3:
Uwaga: funkcja file () nie jest dostępna w python3.
Anonimowy użytkownik
Potwierdzenie od:
lub jedna wkładka:
Dzięki za możliwość przemyślenia tego problemu :)
Owacja
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Używając 'r +', będziesz musiał przewinąć plik do tyłu po przeczytaniu i przed zapisaniem.
Anonimowy użytkownik
Potwierdzenie od:
- coding: utf-8 -
- 'w linii 0. To jest kod.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Więc najpierw otwierasz plik, czytasz go i zapisujesz wszystko w jednym wierszu.
Następnie staramy się znaleźć numer znaku w linii, w której nastąpi wstrzyknięcie. Następnie za pomocą pojedynczego rekordu i inteligentnego indeksowania wiersza możemy przepisać cały plik, łącznie z wprowadzonym tekstem.
Anonimowy użytkownik
Potwierdzenie od:
fragmentaryczny
(zamiast całej zawartości) i używając tego bufora do przechodzenia przez plik,
gdy jest otwarta
i czy kontynuować wymianę zawartości pliku & < - & > buffer?
Wydaje się to być znacznie wydajniejsze (szczególnie w przypadku dużych plików) niż czytanie
Całkowity
zawartość
na myśli
zmieniając to
na myśli
i zapisując z powrotem do tego samego pliku lub (co gorsza) do innego. Przepraszamy, nie mam teraz czasu na zaimplementowanie przykładowego fragmentu kodu. Wrócę do tego później, ale być może zrozumiesz, o co chodzi.