4 разные операции для доступа к файлам в Python

Python NumPy TensorFlow Нейронные сети
4 разные операции для доступа к файлам в Python

Предисловие:Недавно я начал изучать фреймворк tensorflow, элективный курс позволяет выбрать фреймворк для реализации распознавания и классификации множества рукописных цифр. Сяо Чжань также выбрал tf framework с потоком и следовал руководству во время обучения и работы. Сяо Чжань использовал различные нейронные сети для реализации распознавания и классификации. Одним из шагов является сохранение модели, полученной в процессе обучения. использовать модель в тесте. Думая об этом процессе сначала сохранения, а затем загрузки и вызова, я встречал его во многих местах раньше.Самый простой и наиболее часто используемый — это доступ к файлам в python.Вау! Итак, Сяо Чжань смотрел на звезды ночью и начал организовывать и записывать различные операции доступа к файлам следующим образом.

(PS: Хоть я и знаю, что технические статьи слишком длинные и мало кто их терпеливо читает, скорость выдержки и лайков снизится, а профита не будет, но все же хочу записать некоторые заметки в процессе своей обучения.Или кому-то может быть проще!)

Рекомендуемое чтение:пост с записью литкода!

Предварительный просмотр метода

● Встроенные методы Python

метод модуля numpy

метод модуля ОС

Метод модуля csv

Встроенные методы Python

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

  1. метод open()

    file object = open(file_name [, access_mode][, buffering])

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

    имя файла:Переменная file_name — это строковое значение, содержащее имя файла, к которому вы хотите получить доступ.

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

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


  2. метод закрытия()

    fileObject.close()

    Метод close() объекта File сбрасывает всю незаписанную информацию в буфер и закрывает файл, после чего дальнейшая запись невозможна. Когда ссылка на файловый объект переназначается другому файлу, Python закрывает предыдущий файл. Хорошей практикой является закрытие файлов с помощью метода close().

  3. метод записи()

    fileObject.write(string)

    Метод write() может записать любую строку в открытый файл. Важно отметить, что строки Python могут быть двоичными данными, а не только литералами. Метод write() не добавляет новую строку ('\n') в конец строки; передаваемый параметр — это содержимое, которое будет записано в открытый файл.


  4. метод чтения()

    fileObject.read([count])

    Метод read() читает строку из открытого файла. Важно отметить, что строки Python могут быть двоичными данными, а не только литералами. Переданный параметр — это количество байтов, которое нужно прочитать из открытого файла. Метод начинает чтение с начала файла, и если count не передан, он пытается прочитать как можно больше, возможно, до конца файла.

  5. Пример анализа

    В общем, друзьям рекомендуется использовать метод записи with...as..., который будет автоматически закрываться после выполнения блока кода, что позволяет не только упростить программу, но и избежать ненужных ошибок, вызванных невнимательностью или другими причинами. причины.Следующее Приведите фактический случай.

    #先用open方法打开(不存在则创建)一个文件,
    #write方法写入内容,这里with写法不用手动close
    #注意这里是模式‘a',意味着写入内容不覆盖已有内容
    with open('test.txt','a') as file_test:
        file_test.write('小詹是个美男子!\n')
        file_test.write('请关注公众号【小詹学python】!\n')  
    #注意利用read方法读取内容,模式要设置为可读模式
    #read()方法不带参数,表示默认读取最长内容
    with open('test.txt','r') as file_test:
        str = file_test.read()
        print(str)
    


    Результат вывода будет иметь дополнительный файл test.txt в каталоге, и все содержимое будет выведено после чтения.На следующем рисунке показан результат выполнения три раза, что указывает на то, что режим «а» не будет перезаписывать существующее содержимое ( главное сказано трижды!)

методы модуля numpy

Здесь в основном представлены два общих метода модуля numpy для сохранения и чтения данных.

np.loadtxt(filename, dtype=int, delimiter=' ')
np.savetxt(filename, a, fmt="%d", delimiter=",")

Среди них имя файла — это имя файла, который нужно сохранить или прочитать, a — это содержимое, к которому нужно получить доступ, а разделитель — это разделитель. Это очень просто использовать, код выглядит следующим образом:

import numpy as np

a=np.arange(0,10,0.5).reshape(4,-1)
#改为保存为整数,以逗号分隔
np.savetxt("a.txt",a,fmt="%d",delimiter=",")
#load时也要指定为逗号分隔
b = np.loadtxt("a.txt",delimiter=",")
print('b=\n',b)


В результате его работы создается файл с именем «a.txt», массив сохраняется, а результат распечатывается и считывается, как показано на следующем рисунке:

метод модуля ОС

Модуль os в python является мощным и предоставляет методы для многих операций с файлами. Ниже перечислены несколько часто используемых методов.

  1. os.open()

    os.open(file, flags[, mode]);

    Среди них значения параметров:

    file-- файл для открытия

    flags-- Этот параметр может быть следующими опциями, разделенными символом "|":

    1. os.O_RDONLY:открыть только для чтения

    2. os.O_WRONLY:открыть только для записи

    3. os.O_RDWR :открыть для чтения и записи

    4. os.O_NONBLOCK:Открыть без блокировки

    5. os.O_APPEND:открыть как добавить

    6. os.O_CREAT:Создать и открыть новый файл

    7. os.O_TRUNC:Откройте файл и обрежьте его до нулевой длины (должны быть права на запись)

    8. os.O_EXCL:Если указанный файл существует, вернуть ошибку

    9. os.O_SHLOCK:Автоматически получать общие блокировки

    10. os.O_EXLOCK:Автоматически приобретать независимые блокировки

    11. os.O_DIRECT:Устранение или уменьшение эффектов кэширования

    12. os.O_FSYNC :синхронная запись

    13. os.O_NOFOLLOW:Не переходите по программным ссылкам

  2. os.rename(current_name,new_name)способ изменить имя файла

  3. os.remove(filename)метод используется для удаления указанного файла

  4. os.mkdir('newdir')Метод используется для создания одноуровневого каталога, и если каталог уже существует, будет выдано исключение.

  5. os.chdir('newdir')метод используется для изменения текущего рабочего каталога

  6. os.getcwd()способ получить текущий рабочий каталог

  7. os.write(fd,str)Запишите содержимое в указанный файл, обратите внимание, что str должен быть преобразован в byte

Здесь обратите внимание на пример написания содержимого, обратите внимание, что str нужно преобразовать в byte, иначе будет сообщено об ошибке (требуется байтоподобный объект, а не 'str')!

import os
# # 打开文件
fd = os.open("f1.txt",os.O_RDWR|os.O_CREAT)
# # 写入字符串
line = "this is xiaozhan"
b = str.encode(line)
os.write(fd,b)
# #直接写str报错:a bytes-like object is required, not ‘str’
os.close(fd)
#以可读模式打开
fd = os.open("f1.txt",os.O_RDWR)
ret = os.read(fd,16)
print(ret)
os.close(fd)
print('finish close')
# os.remove('f1.txt')


Результаты приведены ниже:

Метод модуля csv

Как и в предыдущих методах, в основном есть две части для чтения и записи. В основном полагайтесь на методы csv.reader(), csv.writer() и writerow(). Подобно предыдущим, здесь основное использование объясняется непосредственно в коде.

import csv

with open('l.csv', 'w',newline='') as csvfile:
    #csv.writer()方法创建
    eWriter = csv.writer(csvfile)
    #用writerow()方法逐行写入
    eWriter.writerow(['ID', '名字', '粉丝数量'])
    eWriter.writerow(['xiaoxiaozhantongxue','小詹学python',15000])
    eWriter.writerow(['xiaoxiaozhantongxue','小詹学python',15000])
    eWriter.writerow(['xiaoxiaozhantongxue','小詹学python',15000])

#打开文件,用with打开可以不用去特意关闭file了,python3不支持file()打开文件,只能用open()
with open('l.csv','r') as csvfile:
    #读取csv文件,返回的是迭代类型
    read = csv.reader(csvfile)
    for i in read:
        print(i)


Результат работы следующий:


Выше приведено содержание этой подборки, на которую вам удобно ссылаться и надеюсь, она будет полезна всем читателям! Статья слишком длинная, пожалуйста, прочитайте ее с терпением, я должен поставить вам большой палец вверх и отправить вам один. Наконец не забудьте нажать 💗 О!


Рекомендовано в прошлом

Серия Python - дни домашнего рабства в Пекине~

Отец сказал | Я не люблю это есть, ты должен съесть это!

Нажмите, чтобы прочитать исходный текст, чтобы просмотреть предыдущие записи регистрации!


Добро пожаловать, чтобы отсканировать код и следовать, и получайте удовольствие, учась и играя с Сяо Чжанем ~