import os
import pathlib
import shutil
import datetime
# запись сообщения в файл с указанием времени
def info(message='All is good!'):
current_time = datetime.datetime.now()
result = f'{current_time} - {message}\n'
with open('info.txt', 'a', encoding='utf_8') as f:
f.write(result)
# создание файла
def create_file(name):
with open(name, 'w', encoding='utf-8') as f:
pass
message = f'Файл {name} создан!'
info(message)
print(message)
# создание папки
def create_folder(name):
try:
os.mkdir(name)
message = f'Папка {name} создана!'
info(message)
print(message)
except FileExistsError:
message = f'Папка {name} уже существует!'
info(message)
print(message)
# просмотр списка файлов и папок
def get_list(folders_only=False):
result = os.listdir()
if folders_only:
result = [f for f in result if os.path.isdir(f)]
message = 'Получен список всех папок!'
else:
message = 'Получен список файлов и папок в текущей папке!'
info(message)
return result
# удаление файла
def delete_file(name):
if os.path.isdir(name):
try:
os.rmdir(name)
message = f'Папка {name} удалена!'
info(message)
print(message)
except OSError:
message = f'Папка {name} не пуста!'
info(message)
print(message)
else:
try:
os.remove(name)
message = f'Файл {name} удален!'
info(message)
print(message)
except FileNotFoundError:
message = f'Файл {name} не существует!'
info(message)
print(message)
except PermissionError:
message = f'Нет разрешения на удаление файла {name}'
info(message)
print(message)
# копирование файлов и папок
def copy_file(name, new_name='copy'):
if os.path.isdir(name):
try:
shutil.copytree(name, new_name)
message = f'Папка {name} и ее содержимое скопиравано в папку {new_name}!'
info(message)
print(message)
except FileExistsError:
message = f'Папка {new_name} уже существует!'
info(message)
print(message)
else:
shutil.copy(name, new_name)
message = f'Файл {name} и его содержимое скопиравано в файл {new_name}!'
info(message)
print(message)
# переименование файла
def rename_file(name, new_name):
try:
os.renames(name, new_name)
message = f'Файл переименован из {name} в {new_name}!'
info(message)
print(message)
except FileNotFoundError:
message = f'Файл {name} не существует!'
info(message)
print(message)
except PermissionError:
message = f'Нет разрешения на переименование файла {name}!'
info(message)
print(message)
# чтение из файла
def read_file(name):
try:
with open(name, 'r', encoding='utf-8') as f:
text = f.readlines()
result = [line.replace('\n', '') for line in text]
message = f'Текст из файла {name} считан!'
info(message)
print(message)
return result
except FileNotFoundError:
message = f'Файл {name} не существует!'
info(message)
print(message)
# запись в файл
def write_in_file(name, text):
try:
with open(name, 'a', encoding='utf-8') as f:
f.write(text + '\n')
message = f'Текст {text} записан в файл {name}!'
info(message)
print(message)
except FileNotFoundError:
message = f'Файл {name} не существует!'
info(message)
print(message)
except PermissionError:
message = f'Нет разрешения на запись в файл {name}!'
info(message)
print(message)
# удаление содержимого ФАЙЛА
def delete_content_file(name):
try:
with open(name, 'w', encoding='utf-8') as f:
message = f'Содержимое файла {name} удалено!'
info(message)
print(message)
pass
except FileNotFoundError:
message = f'Файл {name} не существует!'
info(message)
print(message)
# удаление содержимого ПАПКИ
def delete_content_folder(name):
try:
for the_file in os.listdir(name):
file_path = os.path.join(name, the_file)
if os.path.isfile(file_path):
os.unlink(file_path)
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
message = f'Содержимое папки {name} удалено!'
info(message)
print(message)
except FileNotFoundError:
message = f'Папка {name} не существует!'
info(message)
print(message)
# перемещение файлов
def move_file(name, new_place):
try:
shutil.move(name, new_place)
message = f'Файл {name} теперь расположен в {new_place}!'
info(message)
print(message)
except FileNotFoundError:
message = f'Файл {name} не существует!'
info(message)
print(message)
# архивация папки
def file_archiving(new_name, name, format='zip'):
try:
shutil.make_archive(new_name, format, name)
message = f'Папка {name} архивирована в {new_name}!'
info(message)
print(message)
except FileNotFoundError:
message = f'Папка {name} не существует!'
info(message)
print(message)
# извлечение из архива
def extraction_from_archive(name, new_place=os.getcwd(), format='zip'):
try:
shutil.unpack_archive(name, new_place, format)
message = f'Файлы из архива {name} находятся в {new_place}'
info(message)
print(message)
except shutil.ReadError:
message = f'Архива {name} не существует!'
info(message)
print(message)
# помощь
def help_module():
print('This is a module created by Nikolay Knyazev from Moscow.')
print()
print('It is called FAR Manager.')
print('Here are its main functions:')
print()
print(' - create_file(name) - creates files named "name";')
print(' - create_folder(name) - creates directory named "name";')
print(' - delete_file(name) - deletes files named "name", regardless of whether it is a file or a directory;')
print(' - copy_file(name, new_name) - copies a file named "name" to a file named "new_name";')
print(' - rename_file(name, new_name) - renames file from "name" to "new_name";')
print(' - read_file(name) - reads all text from a file named "name" and returns this text;')
print(' - write_file_in_file(name, text) - appends text "text" to a file named "name";')
print(' - delete_content_file(name) - deletes the contents of a file named "name";')
print(' - delete_content_folder(name) - deletes the contents of a directory named "name";')
print(
' - get_list(folder_only=False) - returns a list of all files and directories, or just directories in the given directory.')
print(' - move_file(name, new_place) - moves the file "name" to the directory "new_place"')
print(
' - file_archiving(new_name, name, format = "zip") - archives a file with the name "name" in the format "zip" (default) to the directory "new_place"')
print()
print('The functionality of the module in the future will be more...')
message = 'Запрошена помощь по модулю FAR Manager'
info(message)