2015-08-05 2 views
5

Я пытаюсь вытащить некоторые данные с страниц facebook для продукта и выгрузить все это в текстовый файл, но я обнаружил, что файл продолжает переписывать себя данными. Я не уверен, что это проблема с разбивкой по страницам, или если мне нужно сделать несколько файлов.Почему мой мой текстовый файл переписывает данные на нем?

Вот мой код:

#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) 

Любая идея, почему это происходит?

ответ

3

Это использование для использования оператора файла с режимом w перезаписи содержимого вы можете использовать a Append метод

Это может быть сделано как этот

Модификация:

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

w перезаписывает существующий файл

т.е.)

file1.txt:

123 

Код:

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

file1.txt после запуска питона:

2 

То есть это значение переписывается

a добавляет к существующему файлу

) т.е.

FILE1.TXT:

123 

код:

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

Файл1.TXT после питона запуска:

1232 

Письменное содержимое добавляется в конец

+0

Отлично !! Спасибо за помощь!! :) – semiflex

+0

@ KrishanVadher рад помочь – The6thSense

5

w перезаписей, открытые с a приобщать или открыть файл один раз вне цикла:

Append:

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

Открыт один раз за пределами цикла:

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

Имеет смысл использовать второй вариант, если вы собираетесь запускать код несколько раз, тогда вы можете открыть с помощью a вне цикла, если файл не существует, он будет создан, если он ли данные будут добавлены

2

Открытие и закрытие файлов

использовать фактические данные файлы чтения и записи стандартного ввода и вывода.

Python предоставляет основные функции и методы, необходимые для управления файлами по умолчанию. Вы можете выполнять большую часть манипуляции с файлами с помощью файлового объекта.

Открытая Функция

Перед тем, как можно прочитать или записать файл, вы должны открыть его с помощью Python встроенный в открытой функции(). Эта функция создает файл-объект, который будет использоваться для вызова других связанных с ним методов поддержки.

Синтаксис объект файла = открыт (имя_файла [, access_mode] [, буферизация])

Вот параметров детали:

имя_файла: имя_файла аргумент является строкой значение, которое содержит имя файла, к которому вы хотите получить доступ.

access_mode: access_mode определяет режим, в котором файл должен быть открыт, т.е., чтение, запись, добавление и т.д. Полный список возможных значений приводится ниже в таблице. Это необязательный параметр, и режим доступа к файлам по умолчанию считывается (r).

буферизация: Если значение буферизация установлено равным 0, не буферизация не происходит. Если значение буферизации равно 1, при доступе к файлу выполняется буферизация строк. Если вы укажете значение буферизации как целое число больше 1, то действие буферизации выполняется с указанным размером буфера. Если значение отрицательное, размер буфера является системным значением по умолчанию (поведение по умолчанию).

Вот список различных режимов открытия файла -

Режимов и описание г = Открывает файл только для чтения. Указатель файла помещается в начале файла. Это режим "по умолчанию".

rb = Открывает файл для чтения только в двоичном формате. Указатель файла помещается в начале файла. Это режим "по умолчанию".

r + = Открывает файл для чтения и записи. Указатель файла помещен в начало файла.

rb + = Открывает файл для чтения и записи в двоичном формате. Указатель файла помещен в начало файла.

w = Открывает файл только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создается новый файл для записи.

wb = Открывает файл для записи только в двоичном формате. Перезаписывает файл, если файл существует. Если файл не существует, создается новый файл для записи.

w + = Открывает файл для записи и чтения. Перезаписывает существующий файл, если файл существует. Если файл не существует, создается новый файл для чтения и записи.

wb + = Открывает файл для записи и чтения в двоичном формате. Перезаписывает существующий файл, если файл существует. Если файл не существует, создается новый файл для чтения и записи.

a = Открывает файл для добавления. Указатель файла находится в конце файла, если файл существует. То есть, файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.

ab = Открывает файл для добавления в двоичном формате. Указатель файла находится в конце файла, если файл существует. То есть, файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.

a + = Открывает файл как для добавления, так и для чтения. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.

ab + = Открывает файл для добавления и чтения в двоичном формате. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.

Чтение и запись файлов

Объект файл содержит набор методов доступа, чтобы сделать нашу жизнь easie с использованием чтения() и писать() методы для чтения и записи файлов.Метод

от записи() Метод

от записи() записывает любую строку в открытом файле. Важно отметить, что строки Python могут иметь двоичные данные, а не только текст.

Метод записи() не добавляет символ новой строки ('\ п') в конце строки -

Синтаксис

fileObject.write(string); 

Здесь, передаваемый параметр является содержимое должно быть записано в открытый файл.

Пример

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

Описанный выше метод может создать файл foo.txt и будет написать данное содержание в этом файле и, наконец, было бы закрыть этот файл. Если вы откроете этот файл, он будет иметь следующий контент.

Python - отличный язык. Метод

Считанные() Метод

Считанные() считывает строку из открытого файла. Важно отметить, что строки Python могут иметь двоичные данные. кроме текстовых данных.

Синтаксис

fileObject.read([count]); 

Здесь, передаваемый параметр является число байтов, которые должны быть считаны из открытого файла. Этот метод начинает чтение с начала файла, и если счет отсутствует, тогда он пытается читать как можно больше, может быть, до конца файла.

Пример

Давайте файл foo.txt, который мы создали выше.

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

Это производит следующий результат - Read струна: Python является

Смежные вопросы