2015-08-05 11 views
5

Próbuję pobrać niektóre dane ze stron Facebooka dla produktu i zrzucić go wszystkie do pliku tekstowego, ale uważam, że plik wciąż nadpisuje dane. Nie jestem pewien, czy jest to problem z paginacją, czy też muszę wykonać kilka plików.Dlaczego mój plik tekstowy nadal nadpisuje dane na nim?

Oto mój kod:

#Modules 
import requests 
import facebook 
import json 

def some_action(post): 
    print posts['data'] 
    print post['created_time'] 

#Token 
access_token = 'INSERT ACCESS TOKEN' 
user = 'walkers' 

#Posts 
graph = facebook.GraphAPI(access_token) 
profile = graph.get_object(user) 
posts = graph.get_connections(profile['id'], 'posts') 

#Write 
while True: 
    posts = requests.get(posts['paging']['next']).json() 
    #print posts 

    with open('test121.txt', 'w') as outfile: 
     json.dump(posts, outfile) 

Każdy pomysł, dlaczego tak się dzieje?

Odpowiedz

3

To zastosowanie do korzystania z operatorem plików w trybie w jesteś nadpisanie zawartości można użyć a Dołącz metoda

Można to zrobić jak ten

modyfikacja:

with open('test121.txt', 'w') as outfile: 
    while True: 
     posts = requests.get(posts['paging']['next']).json() 
     json.dump(posts, outfile) 

w zastępuje istniejący plik

tj)

plik1.txt:

123 

Kod:

with open("File1.txt","w") as oup1: 
    oup1.write("2") 

plik1.txt po biegu Pythona:

2 

Jest to wartość jest zastępowana

a dołącza do istniejącego pliku

tj)

plik1.txt:

123 

Kod:

with open("File1.txt","a") as oup1: 
    oup1.write("2") 

Plik1.txt po biegu Pythona:

1232 

Pisemna treść jest dołączany do końca

+0

Great !! Dzięki za pomoc!! :) – semiflex

+0

@KrishanVadher chętnie pomoże – The6thSense

5

w nadpisaniu otwarty z a do dołączania lub otworzyć plik raz na zewnątrz pętli:

append:

while True: 
    posts = requests.get(posts['paging']['next']).json() 
    #print posts 
    with open('test121.txt', 'a') as outfile: 
     json.dump(posts, outfile) 

Otwórz raz poza pętlą:

with open('test121.txt', 'w') as outfile: 
    while True: 
     posts = requests.get(posts['paging']['next']).json() 
     #print posts 
     json.dump(posts, outfile) 

Bardziej sensowne jest użycie drugiej opcji, jeśli zamierzasz uruchamiać kod kilka razy, możesz otworzyć także z a poza pętlą, jeśli plik nie istnieje, zostanie utworzony, jeśli dane nie będą dołączane

2

otwieranie i zamykanie plików

korzystania z rzeczywistych plików danych czytanie i pisanie na standardowe wejście i wyjście.

Python zapewnia podstawowe funkcje i metody niezbędne do domyślnego modyfikowania plików. Większość manipulacji plikami można wykonać przy użyciu obiektu pliku.

funkcji Open

Zanim będzie można odczytać lub zapisać plik, trzeba otworzyć go za pomocą Pythona wbudowanej funkcji open(). Ta funkcja tworzy obiekt pliku, który byłby wykorzystywany do wywoływania innych powiązanych z nim metod pomocy.

Składnia pliku obiektu = otwarte (nazwa_pliku_logu [, access_mode] [buforowania])

Oto dane parametryczne:

nazwa_pliku_logu: nazwa_pliku argument jest łańcuch wartość zawierająca nazwę pliku, do którego chcesz uzyskać dostęp.

access_mode: access_mode określa tryb, w którym plik ma zostać otwarty, to znaczy, czytać, pisać, dołącz itp pełną listę możliwych wartości znajduje się poniżej w tabeli. Jest to parametr opcjonalny i odczytywany jest domyślny tryb dostępu do pliku (r).

buforowanie: Jeżeli wartość buforowania jest ustawiony na 0, bez buforowania odbywa. Jeśli wartość buforowania wynosi 1, buforowanie linii jest wykonywane podczas uzyskiwania dostępu do pliku. Jeśli określisz wartość buforowania jako liczbę całkowitą większą niż 1, wówczas akcja buforowania zostanie wykonana z podanym rozmiarem bufora. Jeśli wartość jest ujemna, rozmiar bufora jest wartością domyślną systemu (zachowanie domyślne).

Oto lista różnych trybów otwarcia pliku -

tryby i opis r = Otwiera plik tylko do odczytu. Wskaźnik pliku znajduje się na początku pliku. To jest tryb domyślny.

rb = Otwiera plik do odczytu tylko w formacie binarnym. Wskaźnik pliku znajduje się na początku pliku. To jest tryb domyślny.

r + = Otwiera plik do odczytu i zapisu. Wskaźnik pliku umieszczony na początku pliku.

rb + = Otwiera plik do odczytu i zapisu w formacie binarnym. Wskaźnik pliku umieszczony na początku pliku.

w = Otwiera plik tylko do zapisu. Zastępuje plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

wb = Otwiera plik do zapisu tylko w formacie binarnym. Zastępuje plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

w + = Otwiera plik zarówno do pisania, jak i czytania. Zastępuje istniejący plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

wb + = Otwiera plik do zapisu i odczytu w formacie binarnym. Zastępuje istniejący plik, jeśli plik istnieje. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

a = Otwiera plik do dodania. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Oznacza to, że plik znajduje się w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

ab = Otwiera plik do dodania w formacie binarnym. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Oznacza to, że plik znajduje się w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do zapisu.

a + = Otwiera plik zarówno do dodawania, jak i do odczytu. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Plik zostanie otwarty w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

ab + = Otwiera plik zarówno do dodawania, jak i czytania w formacie binarnym. Wskaźnik pliku znajduje się na końcu pliku, jeśli plik istnieje. Plik zostanie otwarty w trybie dołączania. Jeśli plik nie istnieje, tworzy nowy plik do odczytu i zapisu.

Odczytywanie i zapisywanie plików

Przedmiotem Plik zawiera zestaw metod dostępu, aby nasze życie easie przy użyciu read() i write() metody do odczytu i zapisu plików.Metoda

Wpisanie() Metoda

Wpisanie() zapisuje dowolny ciąg do otwartego pliku. Należy zauważyć, że ciągi w języku Python mogą zawierać dane binarne, a nie tylko tekst.

metoda write() nie dodaje znak nowej linii ('\ n') na końcu łańcucha -

Składnia

fileObject.write(string); 

Tutaj przeszedł parametrem jest treść do zapisania w otwartym pliku.

Przykład

# Open a file 
fo = open("file.txt", "wb") 
fo.write("Python is a great language"); 
# Closeopend file 
fo.close() 

Powyższy sposób by utworzyć plik foo.txt i że napisać danej zawartości tego pliku i wreszcie to zamknięcie tego pliku. Gdybyś otworzył ten plik, miałby następującą zawartość.

Python to świetny język. Metoda

read() Metoda

read() odczytuje ciąg z otwartego pliku. Należy zauważyć, że ciągi w języku Python mogą zawierać dane binarne. oprócz danych tekstowych.

Składnia

fileObject.read([count]); 

Tutaj przeszedł parametrem jest liczba bajtów do odczytu z otwartego pliku. Ta metoda rozpoczyna czytanie od początku pliku, a jeśli brak jest liczby, próbuje odczytać jak najwięcej, być może do końca pliku.

Przykład

Weźmy foo.txt pliku, który stworzyliśmy powyżej.

# Open a file 
    fo = open("foo.txt", "r+") 
    str = fo.read(10); 
    print "Read String is : ", str 
    # Close opend file 
    fo.close() 

To daje następujący wynik - Czytaj napisu to: Python jest

Powiązane problemy