Files & Dirs

Прочитати увесь файл

open / close

конструкція з open - така:

f = open('path_to/file.txt', mode)
text = f.read()  # зчитує увесь файл в один великий рядок
f.close()
print(text)      # 'first string\nsecond string\nthird string\n...'

with

Відмінність від open(): з with python самостійно закриває файл, нема необхідності пам’ятати про це. Не викликаються виключення при відкритті файлу (наприклад, якщо файл не існує).

with open('path_to/file', mode) as f:
    text = f.read()

readlines

Корисна функція, яка зчитує рядки файлу з \n в список:

f = open('r1.txt')
str_list1 = f.readlines()            # кожний ел-нт списку матиме на кінці '...\n'
str_list2 = reversed(f.readlines())  # або зчитати файл в зворотньому порядку
f.close()

read + split

Якщо потрібно отримати рядки файлу, але без \n в кінці, можна скористатися методом split і як роздільник вказати символ \n:

f = open('r1.txt')
str_list = f.read().split('\n')  # ел-нти списку не матимуть на кінці '\n'
f.close()

modes (режими)

где mode - режим работы с файлом: 'r' - read; 'a' - append; 'w' - write

  • 'r' - Открыть файл только для чтения (значение по умолчанию)

  • 'w' - Открыть файл для записи. Если файл существует, то его содержимое удаляется

  • 'a' - Открыть файл для добавления записей. Данные добавляются в конец файла

  • 'r+' - Открыть файл для чтения и записи. Проверь это!

    • если файл существует, то его содержимое удаляется.

    • если файл не существует - будет вызвано исключение.

  • 'w+' - открыть файл для чтения и записи

    • если файл существует, то его содержимое удаляется

    • если файл не существует, то создается новый

  • 'a+' - открыть файл для чтения и записи. Данные добавляются в конец файла

    • если файл существует, что тут?

    • если файл не существует, то что тут?

Прочитати файл порядково

f = open('r1.txt')
f.readline()  # 'first string\n'
f.readline()  # 'second string\n'
f.close()

Але часто нема необхідності у використанні методів read. Напр., цикл for:

f = open('r1.txt')
for line in f:
    print(line)
f.close()

Приклад з виключенням

try:
    fh = open("testfile", "w")
    try:
        fh.write("This is my test file for exception handling!!")
    finally:
        print ("Going to close the file")
        fh.close()
    except IOError:
        print ("Error: can\'t find file or read data")

Робота с двомя файлами одночасно

with open(fname + '.inp') as f_inp:
    with open(fname + '.out', 'w') as f_out:
        for line in f_inp:
            line = re.sub('\s{4}','\t',line)
            f_out.write(line)
    f_out.close()  # з with можна цього не робити

Last updated