python file handling tutorial
Интензивен поглед върху операциите за обработка на файлове с Python с практически примери:
В поредицата на Урок за Python за начинаещи , научихме повече за Функции на низовете на Python в последния ни урок.
Python ни предоставя важна функция за четене на данни от файла и запис на данни във файл.
Най-вече в програмните езици всички стойности или данни се съхраняват в някои променливи, които са нестабилни по своята същност.
Тъй като данните ще се съхраняват в тези променливи само по време на изпълнение и ще бъдат загубени след завършване на изпълнението на програмата. Следователно е по-добре тези данни да се запазват за постоянно, като се използват файлове.
Какво ще научите:
- Как Python обработва файлове?
- Видове файлове в Python
- Операции за обработка на файлове на Python
- Кодиране във файлове
- Писане и четене на данни от двоичен файл
- Файлови атрибути на входа / изхода
- Python файлови методи
- Обобщение
- Препоръчително четене
Как Python обработва файлове ?
Ако работите в голямо софтуерно приложение, където те обработват голям брой данни, тогава не можем да очакваме тези данни да се съхраняват в променлива, тъй като променливите са нестабилни по своята същност.
Следователно кога ще се справяте с подобни ситуации, ролята на файловете ще се появи в картината.
Тъй като файловете са енергонезависими по своята същност, данните ще се съхраняват постоянно във вторично устройство като Hard Disk и с помощта на python ще обработваме тези файлове в нашите приложения.
Мислите ли как python ще обработва файлове?
Да вземем Пример за това как нормалните хора ще се справят с файловете. Ако искаме да прочетем данните от файл или да запишем данните във файл, тогава първо ще отворим файла или ще създадем нов файл, ако файлът не съществува и след това ще изпълним нормалните операции за четене / запис , запишете файла и го затворете.
По същия начин ние правим същите операции в python, използвайки някои вградени методи или функции.
Видове файлове в Python
В Python има два типа файлове и всеки от тях е обяснен подробно по-долу с примери за вашето лесно разбиране.
Те са:
- Двоичен файл
- Текстов файл
Двоични файлове в Python
Повечето файлове, които виждаме в нашата компютърна система, се наричат двоични файлове.
Пример:
- Файлове на документи: .pdf, .doc, .xls и др.
- Файлове с изображения: .png, .jpg, .gif, .bmp и др.
- Видео файлове: .mp4, .3gp, .mkv, .avi и др.
- Аудио файлове: .mp3, .wav, .mka, .aac и др.
- Файлове с база данни: .mdb, .accde, .frm, .sqlite и др.
- Архивни файлове: .zip, .rar, .iso, .7z и др.
- Изпълними файлове: .exe, .dll, .class и др.
Препоръчително четене = >> Как да отворите .7z файл
Всички двоични файлове следват определен формат. Можем да отворим някои двоични файлове в нормалния текстов редактор, но не можем да прочетем съдържанието, намиращо се във файла. Това е така, защото всички двоични файлове ще бъдат кодирани в двоичен формат, който може да бъде разбран само от компютър или машина.
За обработка на такива двоични файлове се нуждаем от специфичен тип софтуер, който да го отвори.
Например, Нужен ви е софтуер на Microsoft word, за да отворите двоични файлове .doc. По същия начин се нуждаете от софтуер за четене на PDF, за да отворите двоични файлове .pdf, а имате нужда от софтуер за редактор на снимки, за да четете файловете с изображения и т.н.
Текстови файлове в Python
Текстовите файлове нямат специфично кодиране и могат да бъдат отворени в самия текстов редактор.
Пример:
- Уеб стандарти: html, XML, CSS, JSON и др.
- Програмен код: c, app, js, py, java и т.н.
- Документи: txt, tex, RTF и т.н.
- Таблични данни: csv, tsv и т.н.
- Конфигурация: ini, cfg, reg и т.н.
В този урок ще видим как да боравим както с текст, така и с двоични файлове с някои класически примери.
Операции за обработка на файлове на Python
Най-важното е, че има 4 типа операции, които могат да се обработват от Python върху файлове:
- Отворете
- Прочети
- Пишете
- Близо
Други операции включват:
- Преименувайте
- Изтрий
Python Създаване и отваряне на файл
Python има вградена функция, наречена open () за отваряне на файл.
Необходим е минимум един аргумент, както е споменато в синтаксиса по-долу. Отвореният метод връща файлов обект, който се използва за достъп до методите за запис, четене и други вградени методи.
Синтаксис:
file_object = open(file_name, mode)
Тук file_name е името на файла или местоположението на файла, който искате да отворите, и file_name трябва да включва и разширението на файла. Което означава в test.txt - терминът тест е името на файла, а .txt е разширението на файла.
Режимът в синтаксиса на отворената функция ще каже на Python каква операция искате да направите с файл.
- ‘R’ - Режим на четене: Режимът на четене се използва само за четене на данни от файла.
- ‘W’ - Режим на запис: Този режим се използва, когато искате да запишете данни във файла или да го промените. Не забравяйте, че режимът на запис замества данните, присъстващи във файла.
- ‘A’ - режим на добавяне: Режимът на добавяне се използва за добавяне на данни към файла. Не забравяйте, че данните ще бъдат добавени в края на указателя на файла.
- ‘R +’ - Режим на четене или запис: Този режим се използва, когато искаме да запишем или прочетем данните от същия файл.
- ‘A +’ - режим на добавяне или четене: Този режим се използва, когато искаме да прочетем данни от файла или да ги добавим към същия файл.
Забележка: Гореспоменатите режими са само за отваряне, четене или писане на текстови файлове.
Докато използваме двоични файлове, трябва да използваме същите режими с буквата „Б“ накрая. За да може Python да разбере, че взаимодействаме с двоични файлове.
- „Wb“ - Отворете файл за режим само за запис в двоичен формат.
- ‘Rb’ - Отворете файл за режим само за четене в двоичен формат.
- ‘От’ - Отворете файл за добавяне само на режим в двоичен формат.
- ‘Rb +’ - Отворете файл за режим само за четене и запис в двоичен формат.
- „От +“ - Отворете файл за добавяне и режим само за четене в двоичен формат.
Пример 1:
fo = open(“C:/Documents/Python/test.txt”, “r+”)
В горния пример ние отваряме файла с име „test.txt“, намиращ се в местоположението „C: / Documents / Python /“ и отваряме същия файл в режим на четене и запис, което ни дава по-голяма гъвкавост.
Пример 2:
fo = open(“C:/Documents/Python/img.bmp”, “rb+”)
В горния пример ние отваряме файла с име ‘img.bmp’, намиращ се в местоположението „C: / Documents / Python /“, но тук се опитваме да отворим двоичния файл.
Python четене от файл
За да прочетем файл в python, трябва да отворим файла в режим на четене.
Има три начина, по които можем да четем файловете в python.
- прочетете ((n))
- четене ((n))
- прочетени линии ()
Тук n е броят на байтовете за четене.
Първо, нека създадем примерен текстов файл, както е показано по-долу.
Сега нека наблюдаваме какво прави всеки метод на четене:
Пример 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read(5))
Изход:
Здравейте
Тук отваряме файла test.txt в режим само за четене и четем само първите 5 знака от файла, използвайки метода my_file.read (5).
Изход:
Пример 2:
как да разделя низ от символен питон
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read())
Изход:
Здравей свят
Здравей Python
Добро утро
Тук не сме предоставили никакъв аргумент във функцията read (). Следователно той ще прочете цялото съдържание, налично във файла.
Изход:
Пример 3:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline(2))
Изход:
Той
Тази функция връща първите 2 знака от следващия ред.
Изход:
Пример 4:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readline())
Изход:
Здравей свят
С помощта на тази функция можем да четем съдържанието на файла на ред по ред.
Изход:
Пример 5:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.readlines())
Изход:
(‘Hello World n’, ‘Hello Python n’, ‘Good Morning’)
Тук четем всички редове, присъстващи в текстовия файл, включително символите за нов ред.
Изход:
Сега нека видим още някои практически примери за четене на файл.
Четене на определен ред от файл
line_number = 4 fo = open(“C:/Documents/Python/test.txt”, ’r’) currentline = 1 for line in fo: if(currentline == line_number): print(line) break currentline = currentline +1
Изход:
Как си
В горния пример се опитваме да прочетем само 4-тетиред от файла ‘test.txt’ с помощта на „За цикъл“ .
Изход:
Четене на целия файл наведнъж
filename = “C:/Documents/Python/test.txt” filehandle = open(filename, ‘r’) filedata = filehandle.read() print(filedata)
Изход:
Здравей свят
Здравей Python
Добро утро
Как си
Изход:
Python запис във файл
За да запишем данни във файл, трябва да отворим файла в режим на запис.
Трябва да бъдем много внимателни, докато записваме данни във файла, тъй като той замества съдържанието във файла, който пишете, и всички предишни данни ще бъдат изтрити.
Имаме два метода за запис на данни във файл, както е показано по-долу.
- запис (низ)
- линии за запис (списък)
Пример 1:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”)
Горният код записва String ‘Hello World’ във файла ‘test.txt’.
Преди да запишете данни във файл test.txt:
Изход:
Пример 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World
”) my_file.write(“Hello Python”)
Първият ред ще бъде ‘Hello World’ и както споменахме символа n, курсорът ще се премести в следващия ред на файла и след това ще напише ‘Hello Python’.
как да стартирам java проект -
Не забравяйте, че ако не споменем символа n, данните ще се записват непрекъснато в текстовия файл като ‘Hello WorldHelloPython’
Изход:
Пример 3:
fruits = (“Apple
”, “Orange
”, “Grapes
”, “Watermelon”) my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.writelines(fruits)
Горният код пише a списък с данни във файла ‘test.txt’ едновременно.
Изход:
Python Добавяне към файл
За да добавим данни във файл, трябва да отворим файла в режим „a +“, за да имаме достъп както до добавянето, така и до режимите на запис.
Пример 1:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“Strawberry”)
Горният код добавя низа „Apple“ в край на файла ‘test.txt’.
Изход:
Пример 2:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.write (“
Guava”)
Горният код добавя низа „Apple“ в края на файла „test.txt“ в нов ред .
Изход:
Пример 3:
fruits = (“
Banana”, “
Avocado”, “
Figs”, “
Mango”) my_file = open(“C:/Documents/Python/test.txt”, “a+”) my_file.writelines(fruits)
Горният код добавя списък с данни във файл „test.txt“.
Изход:
Пример 4:
text=('
Hello','
Hi','
Python') my_file=open('C:/Documents/Python/test.txt',mode='a+') my_file.writelines(text) print('where the file cursor is:',my_file.tell()) my_file.seek(0) for line in my_file: print(line)
В горния код добавяме списъка с данни във файла ‘test.txt’. Тук можете да забележите, че сме използвали метода Tell (), който отпечатва мястото, където е курсорът.
търсене (отместване): Отместването взема три типа аргументи, а именно 0,1 и 2.
Когато отместването е 0: Препратката ще бъде посочена в началото на файла.
Когато отместването е 1: Референцията ще бъде насочена към текущата позиция на курсора.
Когато отместването е 2: Препратката ще бъде посочена в края на файла.
Изход:
Python Close файл
За да затворим файл, първо трябва да го отворим. В python имаме вграден метод, наречен close () за затваряне на отворения файл.
Всеки път, когато отворите файл, е важно да го затворите, особено с метода write. Защото, ако не извикаме функцията за затваряне след метода на запис, тогава каквито и данни да сме записали във файл, няма да бъдат записани във файла.
Пример 1:
my_file = open(“C:/Documents/Python/test.txt”, “r”) print(my_file.read()) my_file.close()
Пример 2:
my_file = open(“C:/Documents/Python/test.txt”, “w”) my_file.write(“Hello World”) my_file.close()
Python Преименуване или изтриване на файл
Python ни предоставя модул “os”, който има някои вградени методи, които биха ни помогнали при извършването на файловите операции като преименуване и изтриване на файла.
За да използваме този модул, на първо място, трябва да импортираме модула “os” в нашата програма и след това да извикаме свързаните методи.
метод rename ():
Този метод rename () приема два аргумента, т.е. текущото име на файла и новото име на файла.
Синтаксис:
os.rename(current_file_name, new_file_name)
Пример 1:
import os os.rename(“test.txt”, “test1.txt”)
Тук ‘test.txt’ е текущото име на файла, а ‘test1.txt’ е новото име на файла.
Можете да посочите местоположението, както е показано в примера по-долу.
Пример 2:
import os os.rename(“C:/Documents/Python/test.txt”, “C:/Documents/Python/test1.txt”)
Преди да преименувате файла:
След изпълнение на горната програма
метод премахване ():
Използваме метода remove (), за да изтрием файла, като предоставим името на файла или местоположението на файла, което искате да изтриете.
Синтаксис:
os.remove(file_name)
Пример 1:
import os os.remove(“test.txt”)
Тук ‘test.txt’ е файлът, който искате да премахнете.
По същия начин можем да предадем и местоположението на файла на аргументите, както е показано в примера по-долу
Пример 2:
import os os.remove(“C:/Documents/Python/test.txt”)
Кодиране във файлове
Кодирането на файлове представлява преобразуване на символи в определен формат, който само машина може да разбере.
Различните машини имат различен формат на кодиране, както е показано по-долу.
- Microsoft Windows OS използва ‘Cp1252’ формат за кодиране по подразбиране.
- Linux или Unix OS използва „Utf-8“ формат за кодиране по подразбиране.
- MAC OS на Apple използва „Utf-8“ или „utf-16“ формат за кодиране по подразбиране.
Нека да видим операцията за кодиране с някои примери.
Пример 1:
my_file = open(“C:/Documents/Python/test.txt”, mode=”r”) print(“Microsoft Windows encoding format by default is:”, my_file.encoding) my_file.close()
Изход:
Форматът за кодиране на Microsoft Windows по подразбиране е cp1252.
Тук изпълних програмата си на машината на Windows, така че тя отпечата кодирането по подразбиране като „cp1252“.
Изход:
Също така можем да променим формата на кодиране на файл, като го предадем като аргументи на отворената функция.
Пример 2:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”cp437”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Изход:
Форматът на кодиране на файл е: cp437
Изход:
Пример 3:
my_file = open(“C:/Documents/Python/test.txt”, mode=”w”, encoding=”utf-16”) print(“File encoding format is:”, my_file.encoding) my_file.close()
Изход:
Форматът за кодиране на файлове е: utf-16
Изход:
Писане и четене на данни от двоичен файл
Двоичните файлове съхраняват данни в двоичен формат (0 и 1), което е разбираемо за машината. Така че, когато отворим двоичния файл в нашата машина, той декодира данните и се показва в разбираем за човека формат.
Пример:
# Нека създадем двоичен файл.
my_file = open(“C:/Documents/Python/bfile.bin”, “wb+”) message = “Hello Python” file_encode = message.encode(“ASCII”) my_file.write(file_encode) my_file.seek(0) bdata = my_file.read() print(“Binary Data:”, bdata) ntext = bdata.decode(“ASCII”) print(“Normal data:”, ntext)
В горния пример първо създаваме двоичен файл 'Bfile.bin' с достъп за четене и запис и всички данни, които искате да въведете във файла, трябва да бъдат кодирани, преди да извикате метода за запис.
Също така отпечатваме данните, без да ги декодираме, за да можем да наблюдаваме как точно изглеждат данните във файла, когато е кодиран, а също така отпечатваме същите данни, като ги декодираме, така че да могат да бъдат прочетени от хората.
Изход:
Двоични данни: b’Hello Python ’
Нормални данни: Здравейте Python
Изход:
Файлови атрибути на входа / изхода
Атрибут | Описание |
---|---|
прочетени линии () | Чете и връща всички редове от файла |
Име | Върнете името на файла |
Режим | Режим на връщане на файла |
Кодиране | Върнете формата за кодиране на файла |
Затворено | Връща true, ако файлът е затворен, ако връща false |
Пример:
my_file = open(“C:/Documents/Python/test.txt”, “a+”) print(“What is the file name? ”, my_file.name) print(“What is the file mode? ”, my_file.mode) print(“What is the encoding format? ”, my_file.encoding) print(“Is File closed? ”, my_file.closed) my_file.close() print(“Is File closed? ”, my_file.closed)
Изход:
Какво е името на файла? C: /Documents/Python/test.txt
Какво представлява файловият режим? r
Какъв е форматът за кодиране? cp1252
Файлът затворен ли е? Невярно
Файлът затворен ли е? Вярно
Изход:
Нека изпробваме няколко други метода на файла.
Пример:
my_file = open(“C:/Documents/Python/test.txt”, “w+”) my_file.write(“Hello Python
Hello World
Good Morning”) my_file.seek(0) print(my_file.read()) print(“Is file readable: ?”, my_file.readable()) print(“Is file writeable: ?”, my_file.writable()) print(“File no:”, my_file.fileno()) my_file.close()
Изход:
Здравей Python
Здравей свят
Добро утро
Четене на файла :? Вярно
Записва ли се файл :? Вярно
Файл №: 3
Изход:
Python файлови методи
Функция | Обяснение |
---|---|
отворен () | За да отворите файл |
близо() | Затворете отворен файл |
fileno () | Връща цяло число на файла |
прочетете (n) | Чете „n“ символа от файла до края на файла |
четим () | Връща true, ако файлът е четим |
четене () | Прочетете и върнете един ред от файла |
търси (компенсира) | Променете позицията на курсора по байтове, както е посочено от отместването |
видим () | Връща true, ако файлът поддържа произволен достъп |
казвам() | Връща текущото местоположение на файла |
записваем () | Връща true, ако файлът може да се записва |
напиши () | Записва низ от данни във файла |
линии за писане () | Записва списък с данни във файла |
Нека видим какво обсъждахме досега в крайна програма.
Пример:
my_file = open('C:/Documents/Python/test.txt', mode='w+') print('What is the file name? ', my_file.name) print('What is the mode of the file? ', my_file.mode) print('What is the encoding format?', my_file.encoding) text = ('Hello Python
', 'Good Morning
', 'Good Bye') my_file.writelines(text) print('Size of the file is:', my_file.__sizeof__()) print('Cursor position is at byte:', my_file.tell()) my_file.seek(0) print('Content of the file is:', my_file.read()) my_file.close() file = open('C:/Documents/Python/test.txt', mode='r') line_number = 3 current_line = 1 data = 0 for line in file: if current_line == line_number: data = line print('Data present at current line is:', data) break current_line = current_line + 1 bin_file = open('C:/Documents/Python/bfile.exe', mode='wb+') message_content = data.encode('utf-32') bin_file.write(message_content) bin_file.seek(0) bdata = bin_file.read() print('Binary Data is:', bdata) ndata = bdata.decode('utf-32') print('Normal Data is:', ndata) file.close() bin_file.close()
Изход:
Какво е името на файла? C: /Documents/Python/test.txt
Какъв е режимът на файла? w +
Какъв е форматът за кодиране? cp1252
Размерът на файла е: 192
Позицията на курсора е в байт: 36
Съдържанието на файла е: Здравейте Python
Добро утро
Довиждане
Данните, налични в текущия ред, са: Сбогом
Двоичните данни са: b ' xff xfe x00 x00G x00 x00 x00o x00 x00 x00o x00 x00 x00d x00 x00 x00 x00 x00 x00B x00 x00 x00y x00 x00 x00e x00 x00 x00 ′
Нормалните данни са: Сбогом
най-доброто шпионско приложение за мобилен телефон
Изход:
Обобщение
По-долу са изброени няколко насоки, които могат да бъдат обобщени от горния урок:
- Обикновено използваме файл за трайно съхранение на данни във вторичното хранилище, тъй като той е нестабилен по своята същност, така че данните могат да се използват в бъдеще.
- Понякога в някои приложения може да искаме да прочетем данните от текстов файл или двоичен файл, така че да можем да го постигнем с помощта на вградените функции в Python като отворени, четени, писани методи и т.н.
- Трябва да бъдете много внимателни, докато използвате метода за запис, защото каквито и да е данни, които записвате във файла, ще бъдат презаписани и старите данни ще бъдат загубени.
- За да предотвратите презаписване на данни, по-добре е да отворите файл в режим на запис и добавяне, така че данните да бъдат добавени в края на файла.
- Не забравяйте, че когато отворите файл в двоичен режим, той не приема параметъра за кодиране.
- Можете да извършите преименуване и изтриване на файл, като използвате методите за преименуване и премахване от модула / пакета “os”.
Надяваме се, че ви е харесал този информативен урок за обработка на файлове на Python. Предстоящият ни урок ще обясни повече за основната функция на Python.
Препоръчително четене
- Вход-изход и файлове в Python (Python отваря, чете и записва във файл)
- Урок за Python DateTime с примери
- Урок за Python за начинаещи (практически БЕЗПЛАТНО обучение за Python)
- Уроци за задълбочено затъмнение за начинаещи
- Функции на низовете на Python
- Урок за разделяне на низове на Python
- Променливи на Python
- Обекти на файл VBScript: CopyFile, DeleteFile, OpenTextFile, четене и запис на текстов файл