f.write записывать только последнюю строку данных из beautifulsoup [duplicate]

for(int i = 0;i<menuArray.length; i++) 
{
    Button b = new Button(this);
    b.setText(menuArray[i]);
    ll.addView(b);
}

Удалите приведенный ниже оператор

 try {
        x = count();
    } catch (IOException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

и попробуйте указать высоту и ширину макета для всех макетов ..

1192
задан martineau 22 December 2016 в 22:12
поделиться

8 ответов

with open("test.txt", "a") as myfile:
    myfile.write("appended text")
1899
ответ дан Petter 15 August 2018 в 15:09
поделиться
  • 1
    Этот из учебника может быть полезен. – Dan 29 July 2011 в 23:44
  • 2
    Я заметил, что многие используют метод with open(file, "a"). Я, может быть, старомодный, но в чем преимущество над open(file, "a") ... file.close() – user 12 June 2013 в 17:33
  • 3
    bluewoodtree: преимущества аналогичны преимуществам RAII на C ++. Если вы забудете закрыть (), может потребоваться некоторое время, прежде чем файл будет закрыт. Легче думать, что вы можете забыть об этом, когда код имеет несколько точек выхода, исключения и т. Д. – Petter 13 June 2013 в 18:37
  • 4
    print("appended text", file=myfile) также возможно, для более знакомого api. – Thomas Ahle 9 March 2014 в 21:44
  • 5
    @Tom: нет. open() не имеет жесткого кода utf-8. Он использует locale.getpreferredencoding(False) . Pass encoding="utf-8" явно, если знаете, что файл использует кодировку utf-8. – jfs 29 December 2014 в 02:56

Вероятно, вы хотите передать "a" в качестве аргумента режима.

with open("foo", "a") as f:
    f.write("cool beans...")

Существуют другие перестановки аргумента режима для обновления (+), усечения (w) и двоичного (b) режима, но начиная с только "a", это ваш лучший выбор.

32
ответ дан istruble 15 August 2018 в 15:09
поделиться

, когда мы используем эту строку open(filename, "a"), a указывает на добавление файла, что означает возможность вставки дополнительных данных в существующий файл.

Вы можете просто использовать следующие строки для добавления текст в вашем файле

def FileSave(filename,content):
    with open(filename, "a") as myfile:
        myfile.write(content)

FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")
10
ответ дан K.Suthagar 15 August 2018 в 15:09
поделиться

Вам нужно открыть файл в режиме добавления, установив «a» или «ab» в качестве режима. См. open () .

Когда вы открываете режим «a», позиция записи всегда находится в конце файла (добавление ).

Пример:

>>> with open('test1','wb') as f:
        f.write('test')
>>> with open('test1','ab') as f:
        f.write('koko')
>>> with open('test1','rb') as f:
        f.read()
'testkoko'

. Вы можете открыть с помощью «a +», чтобы читать, искать назад и читать (но все записи все равно будут в конце файла!). Примечание. Использование «a» не совпадает с открытием с «w» и поиском конца файла - подумайте, что может произойти, если другая программа откроет файл и начнет писать между поиском и записью. В некоторых операционных системах открытие файла с помощью «a» гарантирует, что все ваши последующие записи будут добавляться атомарно в конец файла (даже если файл растет другими сообщениями).


A несколько подробнее о том, как работает режим «a» (, проверенный только на Linux ). Даже если вы будете искать назад, каждая запись будет добавляться в конец файла:

>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'

Фактически, [man5] manpage указывает:

Открытие файла в режиме добавления (a в качестве первого символа режима) приводит к тому, что все последующие операции записи в этот поток происходят в конце файла, как если бы он предшествовал вызову:

fseek(stream, 0, SEEK_END);
< / blockquote>

Старый упрощенный ответ (не используя with):

Пример: ( в реальной программе используйте with, чтобы закрыть файл - см. документация )

>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'
160
ответ дан kmario23 15 August 2018 в 15:09
поделиться

Python имеет много вариантов от основных трех режимов, эти три режима:

'w'   write text
'r'   read text
'a'   append text

Итак, чтобы добавить в файл, это так же просто, как:

f = open('filename.txt', 'a') 
f.write('whatever you want to write here (in append mode) here.')

Тогда есть режимы, которые просто делают ваш код меньше строк:

'r+'  read + write text
'w+'  read + write text
'a+'  append + read text

Наконец, существуют режимы чтения / записи в двоичном формате:

'rb'  read binary
'wb'  write binary
'ab'  append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary
10
ответ дан olibre 15 August 2018 в 15:09
поделиться

Мы можем указать режим при открытии файла. В режиме мы указываем, хотим ли мы читать «r», писать «w» или добавлять «a» в файл. Мы также указываем, хотим ли мы открыть файл в текстовом режиме или в двоичном режиме.

По умолчанию используется чтение в текстовом режиме. В этом режиме мы получаем строки при чтении из файла.

  1. С другой стороны, двоичный режим возвращает байты, и это режим, который будет использоваться при работе с нетекстовым файлы, такие как изображения или файлы exe.

Режимы файлов Python Режим и описание

  • 'r' Откройте файл для чтения. (по умолчанию)
  • 'w' Откройте файл для записи. Создает новый файл, если он не существует или обрезает файл, если он существует.
  • 'x' Откройте файл для эксклюзивного создания. Если файл уже существует, операция завершится неудачно.
  • 'a' Открыть для добавления в конце файла без его усечения. Создает новый файл, если он не существует.
  • 't' Открывается в текстовом режиме. (по умолчанию)
  • 'b' Открыть в двоичном режиме.
  • '+' Открыть файл для обновления (чтение и запись)

В Ваш случай добавить текст в файл, открыть файл в режиме «a», здесь кодировка является необязательным аргументом

f = open("test.txt",mode = 'a',encoding = 'utf-8')
#or
f = open("test.txt",mode = 'a+')
#or if binary mode
f = open("test.txt",mode = 'ab+')

Например:

with open("test.txt",'a',encoding = 'utf-8') as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n") 
0
ответ дан Projesh Bhoumik 15 August 2018 в 15:09
поделиться

Я всегда это делаю,

f = open('filename.txt', 'a')
f.write("stuff")
f.close()

Это просто, но очень полезно.

34
ответ дан Seth Connell 15 August 2018 в 15:09
поделиться
  • 1
    его немного лучше и немного безопаснее писать: с open ('filename', 'a') как f: f.write ('stuff') – Sam Redway 2 February 2015 в 23:00
  • 2
    & Quot; а + & Quot; более предпочтительно, чем "a" – dell pk 12 April 2015 в 20:51
  • 3
    Это менее просто, чем большинство ответов, размещенных за пару лет до этого, и это не более полезно – Tim Castelijns 1 February 2016 в 23:14
  • 4
    @Tim Castelijns Приятно, что кто-то опубликовал альтернативу синтаксису, который вы не всегда можете использовать, если используете переменную в нескольких местах. – marsh 31 May 2016 в 20:23
  • 5
    @marsh. Даже если вы передаете переменную f другим функциям, те же функции, которые открывают файл, должны закрыть его. Синтаксис with является предпочтительным способом выполнения этого. – Andrew Palmer 26 June 2017 в 18:08

Вот мой сценарий, который в основном рассчитывает количество строк, затем добавляет, а затем подсчитывает их снова, чтобы у вас были доказательства, что это сработало.

shortPath  = "../file_to_be_appended"
short = open(shortPath, 'r')

## this counts how many line are originally in the file:
long_path = "../file_to_be_appended_to" 
long = open(long_path, 'r')
for i,l in enumerate(long): 
    pass
print "%s has %i lines initially" %(long_path,i)
long.close()

long = open(long_path, 'a') ## now open long file to append
l = True ## will be a line
c = 0 ## count the number of lines you write
while l: 
    try: 
        l = short.next() ## when you run out of lines, this breaks and the except statement is run
        c += 1
        long.write(l)

    except: 
        l = None
        long.close()
        print "Done!, wrote %s lines" %c 

## finally, count how many lines are left. 
long = open(long_path, 'r')
for i,l in enumerate(long): 
    pass
print "%s has %i lines after appending new lines" %(long_path, i)
long.close()
-4
ответ дан travelingbones 15 August 2018 в 15:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: