|
@@ -0,0 +1,129 @@
|
|
|
+import os
|
|
|
+import shutil
|
|
|
+
|
|
|
+poem = \
|
|
|
+'''There was a young lady named Bright,
|
|
|
+ Whose speed was far faster than light;
|
|
|
+ She started one day
|
|
|
+ In a relative way,
|
|
|
+ And returned on the previous night.
|
|
|
+
|
|
|
+'''
|
|
|
+
|
|
|
+text = """
|
|
|
+ Красивое лучше, чем уродливое.
|
|
|
+ Явное лучше, чем неявное.
|
|
|
+ Простое лучше, чем сложное.
|
|
|
+ Сложное лучше, чем запутанное.
|
|
|
+ Плоское лучше, чем вложенное.
|
|
|
+ Разреженное лучше, чем плотное.
|
|
|
+ Читаемость имеет значение.
|
|
|
+ Особые случаи не настолько особые, чтобы нарушать правила.
|
|
|
+ При этом практичность важнее безупречности.
|
|
|
+ Ошибки никогда не должны замалчиваться.
|
|
|
+ Если они не замалчиваются явно.
|
|
|
+ Встретив двусмысленность, отбрось искушение угадать.
|
|
|
+ Должен существовать один и, желательно, только один очевидный способ сделать это.
|
|
|
+ Хотя он поначалу может быть и не очевиден, если вы не голландец [^1].
|
|
|
+ Сейчас лучше, чем никогда.
|
|
|
+ Хотя никогда зачастую лучше, чем прямо сейчас.
|
|
|
+ Если реализацию сложно объяснить — идея плоха.
|
|
|
+ Если реализацию легко объяснить — идея, возможно, хороша.
|
|
|
+ Пространства имён — отличная штука! Будем делать их больше!
|
|
|
+"""
|
|
|
+
|
|
|
+
|
|
|
+# print в файл
|
|
|
+def test_1():
|
|
|
+ my_file = open('1.txt', 'wt')
|
|
|
+ print(poem, file=my_file)
|
|
|
+ my_file.write(poem)
|
|
|
+ my_file.close()
|
|
|
+
|
|
|
+
|
|
|
+def write_to_file(file_name: str, data: str):
|
|
|
+ with open(file_name, 'w') as file:
|
|
|
+ file.write(data)
|
|
|
+
|
|
|
+# Чтение файла фрагментами
|
|
|
+def read_from_file(file_name: str):
|
|
|
+ with open(file_name, 'r') as file:
|
|
|
+ dzen = ''
|
|
|
+ chunk = 100
|
|
|
+ while True:
|
|
|
+ fragment = file.read(chunk)
|
|
|
+ print(len(fragment))
|
|
|
+ if not fragment:
|
|
|
+ break
|
|
|
+ else:
|
|
|
+ dzen += fragment
|
|
|
+
|
|
|
+ print(dzen)
|
|
|
+
|
|
|
+# Чтение файла построчно
|
|
|
+def read_line_1(file_name: str):
|
|
|
+ with open(file_name, 'r') as file:
|
|
|
+ dzen = ''
|
|
|
+ while True:
|
|
|
+ line = file.readline()
|
|
|
+ if not line:
|
|
|
+ break
|
|
|
+ else:
|
|
|
+ dzen += line
|
|
|
+
|
|
|
+ print(dzen)
|
|
|
+
|
|
|
+# Чтение файла построчно. Упрощенный вариант.
|
|
|
+def read_line_2(file_name: str):
|
|
|
+ with open(file_name, 'r') as file:
|
|
|
+ dzen = ''
|
|
|
+ for line in file:
|
|
|
+ dzen += line
|
|
|
+
|
|
|
+ print(dzen)
|
|
|
+
|
|
|
+# Создание бинарного файла
|
|
|
+def generate_bin_file():
|
|
|
+ bdata = bytes(range(0, 256))
|
|
|
+ with open('bin_file.txt', 'wb') as file:
|
|
|
+ file.write(bdata)
|
|
|
+
|
|
|
+# В функции seek(offset, origin) второй аргумент origin
|
|
|
+# определяет начальную позицию для считывания
|
|
|
+def file_seek(file_name: str):
|
|
|
+ with open(file_name, 'rb') as file:
|
|
|
+ # print(file.tell())
|
|
|
+ # print(file.seek(10))
|
|
|
+ # print(file.tell())
|
|
|
+ file.seek(255)
|
|
|
+ bdata = file.read()
|
|
|
+ print(len(bdata))
|
|
|
+ print(bdata)
|
|
|
+
|
|
|
+#
|
|
|
+def test_os():
|
|
|
+
|
|
|
+ # Существование файла
|
|
|
+ print(os.path.exists('ooo.txt'))
|
|
|
+ print(os.path.exists('sadfasdf.awef'))
|
|
|
+ print(os.path.exists('.'))
|
|
|
+ print(os.path.exists('..'))
|
|
|
+
|
|
|
+ # Проверить тип
|
|
|
+ print(os.path.isfile('file.py'))
|
|
|
+ print(os.path.isdir('.'))
|
|
|
+
|
|
|
+# Копирование файлов
|
|
|
+def test_copy():
|
|
|
+ shutil.copy('file_1.txt', 'file_2.txt')
|
|
|
+ os.rename('file_1.txt', 'file_2.txt')
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# write_to_file('python_dzen.txt', text)
|
|
|
+# read_from_file('python_dzen.txt')
|
|
|
+# read_line_2('python_dzen.txt')
|
|
|
+# generate_bin_file()
|
|
|
+# file_seek('bin_file.txt')
|
|
|
+
|
|
|
+test_os()
|