Найти - Пользователи
Полная версия: KLL - моя мини-библеотека для упрощённой работы с файлами.
Начало » Python проекты » KLL - моя мини-библеотека для упрощённой работы с файлами.
1 2
Gerod
Если вам понравилась идея, напишите как можно дополнить её. Версия проекта (v1.2)
Хай, хотел сегодня показать свою библеотеку под названиям KLL - Это мини-библеотека позволяет улегчеть работу с файлами.

Пример:
Python:
File = open('name', ‘w’) - open - мы вызываем функцию, записываем в неё имя и операцию ('w') тоесть запись либо создания файла.
File.write('text') - Берём File и вызываем функцию write для записи text в файл.
File.close() - Закрываем файл, чтоб не было проблем в дальнейшем в работе с ним.

KLL:
KLL('name', ‘Create.File’, None) name - Имя, Create.File - оператор создания файла, None - метод которого в Create.File нет.

Либо:
KLL('test.txt', ‘Write.File’, ‘text’) - Мы создадим файл, запишим туда text, и закроем.

В KLL уже придусмотрен close(), его вызывать не надо с работой KLL!, KLL будет развиватся в лучшую сторону.

KLL(Argument, Operator, Method) - Argument - Имя файла, Operator - Операции с файлом, Method - Что надо задать оператору.

Операторы:
Create.File:
Создаёт файл с названием Argument. У оператора нет метода, ему это не нужно, иначе будет ошибка KLL: Operator: Error

Open.File:
Читает файл имени Argument, У оператора нет метода, ему это не нужно, иначе будет ошибка KLL: Operator: Error

Write.File:
Записывает значения Method в Argument. Метод указывает, что будет записано в файл.

Delete.File:
Удаляет файл имени Argument, методов нету.



Программа на KLL:

operator = input('Operation: ‘)
if operator == ’1':
name = input('Name: ‘)
KLL(’info.txt', ‘Write.File’, name)
elif operator == ‘2’:
KLL('info.txt', ‘Open.File’, None)
elif operator == ‘3’
KLL('info.txt', ‘Delete.File’, None)
else:
print('Error Operation.')

Код с модулем KLL:
 import os
'''
def KLL accent: argument << operator << method, ( Developer library: Maks Dobragin (gerod) )
'''
def KLL(argument, operator, method):
	#Переменные для работы..
	Argument = argument
	Operator = operator
	Method = method
	''''''''''''''''''''''''''''''
	
	#Переменные внутринести функции.
	Write = method
	KlL = 'KLL: '
	Read = 'Read'
	write = 'Write.File'
	OperW = 'w'
	WriteFile = 'w'
	OperR = 'r'
	Create = 'Create.File'
	Open = 'Open.File'
	Delete = 'Delete.File'
	''''''''''''''''''''''''''''''
	
	
	#Операторы, методы.
	'''|Операторы|'''
	if Operator == Create and Method == None:
		File = open(Argument, OperW)
		File.close()
	elif Operator == write and Method == Write:
		try:
			File = open(Argument, WriteFile)
			File.write(Write)
			File.close()
		except FileNotFoundError:
			print(KlL,'File','(', Argument,')', 'Not Found')
	elif Operator == Open and Method == None:
		try:
			File = open(Argument, OperR)
			print(File.read(9999))
			File.close()
		except FileNotFoundError:
			print(KlL,'File','(', Argument,')', 'Not Found')
	elif Operator == Delete and Method == None:
		try:
			os.remove(Argument)
		except FileNotFoundError:
			print(KlL,'File','(', Argument,')', 'Not Found')
	else:
		print(KlL, 'Operator: Error')
	''''''''''''''''''''''''''''''
py.user.next
Gerod
так как код могут украсть, хотя идею тоже
Выкладывай почаще свой код, тебе укажут на ошибки в нём. Так будешь учиться нормальному программированию. А если будешь прятать код, то будешь годами иметь ошибочные представления и даже не знать об этом.

Gerod
В KLL уже придусмотрен close(), его вызывать не надо с работой KLL!
Ну файлы-то принято открывать через оператор контекста with, который тоже не требует вызова .close(), так как with при входе в контекст вызывает __enter__() у объекта и при выходе из контекста вызывает __exit__() у объекта. А объект уже решает, что делать при вызове его __enter__() и как чиститься при вызове его __exit__().

  
>>> f = open('/etc/passwd')
>>> f.__enter__
<built-in method __enter__ of _io.TextIOWrapper object at 0x7f2011a01b40>
>>> f.__exit__
<built-in method __exit__ of _io.TextIOWrapper object at 0x7f2011a01b40>
>>>
Gerod
py.user.next
Ну файлы-то принято открывать через оператор контекста with, который тоже не требует вызова .close(), так как with при входе в контекст вызывает __enter__() у объекта и при выходе из контекста вызывает __exit__() у объекта. А объект уже решает, что делать при вызове его __enter__() и как чиститься при вызове его __exit__().

Учту, я просто знал способ как получить доступ к файлу: open, а про with, что он тоже может работать с файлами, узнал только щас
Gerod
Ещё вопрос, мне есть смысл изучать программирования? У нас просто в школе информатика а будет через 1 год
JOHN_16
это вообще не связанные вещи - если интересно и есть желание - то смысл есть. А Если вы действительно еще в школе, то у вас еще и есть время для выхода на профессиональный уровень
py.user.next
Gerod
Ещё вопрос, мне есть смысл изучать программирования?
Смотри по своим математическим показателям. То же шифрование или графические форматы файлов (jpg, png) или аудио и видео (mp3, avi), требуют кучи операций с многочленами, с функциями типа f(x) = … . Нужно будет умножать многочлены на многочлены, делить их. Для функций нужно будет искать производные, искать интегралы. Если не вывозишь математику, будешь простым автоматизатором, алгоритмы у тебя будут слабые, неэффективные, долгие. Ты просто запустишь свою программу и не дождёшься, когда она там закончит работу. Потом вот эти все анализы пользователей или там событий требуют тоже математическую статистику, которая также описана математическим языком. Ты её не поймёшь, если не будешь знать математики. Та же репутация на форумах, рейтинги там всякие вычисляются через специальные математические формулы. Так что ключ к программированию не в информатике лежит. Информатика тебя учит работе с инструментами, которыми ты потом будешь записывать эту всю математику на компьютерном языке, ввводить её в компьютер.
Так что сама по себе информатика тебе мало что даст. Будешь знать, сколько байт в мегабайте, и что? Ничего. А вот надо будет текст обработать через конечный автомат, а для этого грамматику надо будет создать, которая описывает язык всех возможных цепочек символов. Ну там не сложно, но всё равно близко к математике. Так даже чтобы текст обработать индуктивно (однопроходным алгоритмом), нужно понимать принцип этой индуктивности, а он весь математическим языком описывается, на изоморфизмах там и прочих вещах.
Gerod
py.user.next
Я понял, основа программирования это математика. (Если программным языком), Class - это математика, Def(функция) - это информатика./quote]
Gerod
А с кодом как?
  import os
'''
def KLL accent: argument << operator << method, ( Developer library: Maks Dobragin (gerod) )
'''
def KLL(argument, operator, method):
	#Переменные для работы..
	Argument = argument
	Operator = operator
	Method = method
	''''''''''''''''''''''''''''''
	
	#Переменные внутринести функции.
	Write = method
	KlL = 'KLL: '
	Read = 'Read'
	write = 'Write.File'
	OperW = 'w'
	WriteFile = 'w'
	OperR = 'r'
	Create = 'Create.File'
	Open = 'Open.File'
	Delete = 'Delete.File'
	''''''''''''''''''''''''''''''
	
	
	#Операторы, методы.
	'''|Операторы|'''
	if Operator == Create and Method == None:
		File = open(Argument, OperW)
		File.close()
	elif Operator == write and Method == Write:
		try:
			File = open(Argument, WriteFile)
			File.write(Write)
			File.close()
		except FileNotFoundError:
			print(KlL,'File','(', Argument,')', 'Not Found')
	elif Operator == Open and Method == None:
		try:
			File = open(Argument, OperR)
			print(File.read(9999))
			File.close()
		except FileNotFoundError:
			print(KlL,'File','(', Argument,')', 'Not Found')
	elif Operator == Delete and Method == None:
		try:
			os.remove(Argument)
		except FileNotFoundError:
			print(KlL,'File','(', Argument,')', 'Not Found')
	else:
		print(KlL, 'Operator: Error')
	''''''''''''''''''''''''''''''
Может что-то поправить?
py.user.next
Gerod
Class - это математика, Def(функция) - это информатика.
Класс - это множество признаков, по-математически - кортеж элементов. Если классов нет в языке, ты можешь их сделать, подав элемент и кортеж признаков этого элемента. А функция - это обычная математическая функция. То есть у неё точно так же есть область определения и область допустимых значений. Есть и график. Алгоритм - это математическая функция такая. И когда ты программируешь, ты думаешь математическими функциями. А когда ты их придумал, какие они должны быть, тогда ты и записываешь их на компьютерном языке уже.

Gerod
А с кодом как?
Для кода есть свои правила. Код должен быть правильным, понятным и легко меняемым.

Почему код должен быть понятным? Код должен быть понятен любому человеку, а не только его автору. Сам ты свой код в итоге забудешь, потому что этих кодов будут сотни. Это сейчас он у тебя один, а потом у тебя коды будут появляться и появляться и в конечном итоге ты сам не будешь помнить свои коды, где, что там и как устроено. Ты не будешь помнить, что ты там хотел сделать, что ты не доделал и так далее. Тебе всё это придётся записывать для себя самого, чтобы ты потом мог эти записи открыть и восстановить всю работу, все планы с данным конкретным кодом. И так с каждым кодом будет. Они будут растягиваться на месяцы и даже на годы. Поэтому код должен быть понятен для совсем незнакомого человека, в нём не должно быть никаких предположений, требующих додумок, всё должно быть на виду, на поверхности. Ты сам станешь тем человеком, который абсолютно не знаком с собственным кодом. Поэтому когда ты его комментируешь, когда ты его пишешь ясно, ты его пишешь таким для себя самого в будущем. И вот когда код ясный и понятный с первого прочтения, ты можешь легко проверять его на правильность, потому что тебе не нужно его разгадывать, чтобы начать хотя бы думать о его составляющих частях. Ты его прочитал и сразу понял, правильный он или нет.

Почему код должен быть легко меняемым? Потому что очень часто ты из старого кода собираешь новые программы. И частенько при этом процессе старый код нужно немножко поменять. То же самое касается багов. Баги тебе никогда не пишут “мы есть в этом коде”, ты их не можешь предусмотреть. Они просто проявляются при работе уже готовой программы. Очень часто баг стопорит всю работу программы. То есть с программой невозможно работать, пока не исправишь этот баг, он стопорит её, делает что-нибудь неправильное, фуфло какое-нибудь куда-нибудь пишет. Ты ей не можешь пользоваться. Тебе нужно его исправить в коде. Тут ты открываешь код программы, а код не пригоден для изменений - чтобы этот баг исправить небольшой, нужно переписать половину программы, а у тебя на это времени нет, тебе нужно с программой работать, а не писать её три недели по новой. И вот тогда ты понимаешь, что код хреново написан, без расчёта на будущее. А в будущем проявились вот эти баги, которые нужно обязательно исправлять. Поэтому здесь ты тоже сам о себе заботишься, чтобы потом с багом каким-нибудь мелким не сидеть три недели, а исправить его за час и продолжать работать с программой.

У меня вот такое было недавно. Я написал программу по выкачиванию ссылок из браузера. И что ты думаешь, всё работало месяцами прекрасно, но через пару версий браузер (разработчики браузера) для удобства добавили сжатие данных, из которых я эти ссылки выуживал, а сжатие выполняется по их внутреннему алгоритму, который они сами там придумали. То есть ещё хрен поймёшь, что там им пришло в голову. И всё, я новую версию браузера поставил, а моя программа сломалась (не умеет она распаковывать ничего). Мне ссылки нужны, а моя прога не может мне их дать, её нужно переписывать. И вот так вот сидишь без программы своей, без ссылок, как в старые времена. А пользоваться-то ей привык уже. Ну и что, пришлось выделять время на анализ всего этого нового сжатия, всё переписывать, всё переделывать, но ушло на это недели две. И две недели я без ссылок сидел. В итоге я полностью поменял архитектуру своей программы, чтобы следующие сюрпризы в браузере никак не влияли на неё. Вот она меняемость. Где-то сделал что-то наскоряк, тяп-ляп, а в итоге две недели из-за этого потом потратил.

А для чего нужно следить за правильностью кода? Вот пример. Пришла девочка и говорит “у меня код правильный, мне теперь нужно другую фигню делать в нём”. Постой, что значит правильный, вот у тебя ошибка, вот у тебя ошибка и вот у тебя ошибка. Код у тебя совсем не правильный, поэтому и продолжать писать следующий этап ты не можешь. То есть на этот код положиться нельзя, мы не можем его нигде использовать, потому что он с ошибками. И всё, за этот код ей поставят двойку, а следующий этап она тоже не выучит, потому что он базируется на этом же коде, который к тому этапу правильным должен быть. В итоге она время потеряла на написание этого неправильного кода, а результат нулевой. Вот её тяп-ляп и сказался. Время потеряно, нового времени никто ей не даст, а узнать она узнала только то, что может только неправильные программы писать.
ZerG
Этот пример избыточного кода.
Кроме того не вижу что бы было учтено элементарные вещи как считывание файла построчно, построчная запись, бинарные данные и так далее и тому подобное.
Я уже не говорю что банально нет возможности открыть файл удалить данные и записать.
Что делается в 2 строки

 with open('filename', w) as file:
    ...
    ...

и все…

Но начинать всегда полезно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB