Работа с папками через командную строку (создание папок и удаление папок)
Написать проект, который можно будет использовать следующим образом:
python main.py create folder_name - создает папку folder_name, если она еще не создана. Если создана - выводит об этом сообщение
python main.py delete folder_name - удаляет папку folder_name, если она пуста. Если не пуста - выводит об этом сообщение
python main.py delete -f folder_name - удаляет папку folder_name вне зависимости от того, есть в ней файлы или нет.
Написал три разных программы:
# программа create_folder.py
import os
import argparse
def create():
parser = argparse.ArgumentParser()
parser.add_argument('name')
return parser
parser = create()
create = parser.parse_args()
if not os.path.isdir(create.name):
os.mkdir(create.name)
else:
print(f'Папка {create.name} уже существует')
#программа delete.py
import os
import argparse
def delete():
parser = argparse.ArgumentParser()
parser.add_argument ('name')
return parser
parser = delete()
delete = parser.parse_args()
try:
os.rmdir(delete.name)
except:
print(f"папка {delete.name} не пуста")
#программа fdelete.py
import shutil
import argparse
def fdelete():
parser = argparse.ArgumentParser()
parser.add_argument ('name')
return parser
parser = fdelete()
fdelete = parser.parse_args()
shutil.rmtree(fdelete.name)
Подскажите, пожалуйста, как это объединить в один проект, что бы вызывать ту программу которая нужна по функции. И как функцию delete разделить на функцию delete и -f delete? Сейчас программы работают если писать >python {название программы} [имя папки]
Ответы (1 шт):
Автор решения: krumlyakov
→ Ссылка
Решил эту задачу через click:
import click
import os
import shutil
@click.group()
def cli():
pass
@click.command()
@click.argument('folder')
def create(folder):
if not os.path.isdir(folder):
os.mkdir(folder)
else:
print(f'Папка {folder} уже существует')
@click.command()
@click.argument('folder')
@click.option('-f', is_flag=True)
def delete(f,folder):
if f:
shutil.rmtree(folder)
else:
try:
os.rmdir(folder)
except:
print(f"папка {folder} не пуста")
cli.add_command(create)
cli.add_command(delete)
if __name__ == '__main__':
cli()