-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathLess5_hard.py
executable file
·125 lines (100 loc) · 4.81 KB
/
Less5_hard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# -*- coding: utf-8 -*-
# Задание-1:
# Доработайте реализацию программы из примера examples/5_with_args.py,
# добавив реализацию следующих команд (переданных в качестве аргументов):
# cp <file_name> - создает копию указанного файла
# rm <file_name> - удаляет указанный файл (запросить подтверждение операции)
# cd <full_path or relative_path> - меняет текущую директорию на указанную
# ls - отображение полного пути текущей директории
# путь считать абсолютным (full_path) -
# в Linux начинается с /, в Windows с имени диска,
# все остальные пути считать относительными.
# Важно! Все операции должны выполняться в той директории, в который вы находитесь.
# Исходной директорией считать ту, в которой был запущен скрипт.
# P.S. По возможности, сделайте кросс-платформенную реализацию.
# Данный скрипт можно запускать с параметрами:
# python with_args.py param1 param2 param3
import os
import sys
import shutil
print('sys.argv = ', sys.argv)
def change_dir ():
if not dir_name:
print('Необходимо указать имя директории вторым параметром')
return
try:
os.chdir(dir_name)
print('Успешно перешли в папку: {}'.format(dir_name))
print('Текущий каталог: ', os.getcwd())
except FileNotFoundError:
print('dir_{} - папки не существует'.format(dir_name))
def file_copy ():
if not name_file:
print("Необходимо указать имя файла вторым параметром")
return
current_dir = os.getcwd()
old_file = os.path.join(current_dir, name_file)
new_file = os.path.join(current_dir, (name_file +'.copy'))
if os.path.isfile(new_file) != True:
shutil.copy(old_file, new_file)
print(new_file + ' - создан')
else:
print('Файл уже скопирован')
def del_file ():
if not name_file:
print("Необходимо указать имя файла вторым параметром")
return
current_dir = os.getcwd()
old_file = os.path.join(current_dir, name_file)
if os.path.isfile(old_file):
answer = input('Вы уверены что хотите удалить файл? y/n: ')
if answer == 'y':
os.remove(old_file)
print(old_file + ' - удален')
else:
return
else:
print('Файла не существует')
def print_help():
print("help - получение справки")
print("mkdir <dir_name> - создание директории")
print("ping - тестовый ключ")
print('cp - создает копию указанного файла')
print('rm - удаляет указанный файл')
print('cd - смена директории на указанную')
print('ls - отображает полный путь текущей директории')
def make_dir():
if not dir_name:
print("Необходимо указать имя директории вторым параметром")
return
dir_path = os.path.join(os.getcwd(), dir_name)
try:
os.mkdir(dir_path)
print('директория {} создана'.format(dir_name))
except FileExistsError:
print('директория {} уже существует'.format(dir_name))
def current_dir ():
print(os.getcwd())
def ping():
print("pong")
do = {"help": print_help, "mkdir": make_dir, "ping": ping, 'cp': file_copy, 'cd': change_dir, 'rm': del_file, 'ls': current_dir}
#Относится к ключу cp - копирование указанного файла и его же использовал при удалении файла ключ rm
try:
name_file = sys.argv[2]
except IndexError:
name_file = None
#относится к копированию папки ключ mkdir, и его же использовал в функции смены директории
try:
dir_name = sys.argv[2]
except IndexError:
dir_name = None
try:
key = sys.argv[1]
except IndexError:
key = None
if key:
if do.get(key):
do[key]()
else:
print("Задан неверный ключ")
print("Укажите ключ help для получения справки")