Я нашел красивую небольшую программу для создания быстрых заметок в терминале. Существует небольшая нехватка функциональности - я не могу читать заметки, которые я сделал с ней, а также не могу очистить заметки из файла, где они хранятся. Я хотел бы изменить эту программу, поэтому я могу запустить ее с аргументами, чтобы прочитать то, что я там написал, а также очистить. У меня есть идея, как это сделать, но не могу найти место записи в коде, чтобы вставить мои строки. Я хочу, чтобы запустить его с аргументами, такими как: -r -cКак добавить дополнительные функции с аргументами в этом коде?
оригинальная программа выглядит следующим образом:
#!/usr/bin/env python3
import time
import os
import sys
# add the current local time to the entry header
lines = [ time.asctime() + '\n' + '--------------------\n' ]
if len(sys.argv) > 1:
lines.append(' '.join(sys.argv[ 1: ]))
lines[-1] += '\n'
else:
while 1:
try:
line = input()
except EOFError:
break
# get more user input until an empty line
if len(line) == 0:
break
else:
lines.append(line + '\n')
# only write the entry if the user entered something
if len(lines) > 1:
memoir_path = os.path.expanduser('~/.memoir')
# prepend a seperator only if the file exists (there are entries already in there)
if os.path.exists(memoir_path):
lines.insert(0, '--------------------\n')
with open(memoir_path, 'a') as f:
f.writelines(lines)
мой код, который я не знаю, куда вставить (если это правильно):
# read memoir file
if str(sys.argv) == ("r"):
os.system('cat ~/.memoir')
# clear memoir file
if str(sys.argv) == ("c"):
os.system('> ~/.memoir')
EDIT:
Я сделал несколько изменений, из-за ответ, и все работает отлично, но я хотел бы сделать этот код немного проще. Автор этого кода добавил некоторые функции usles для запуска этой программы с количеством случайных аргументов, которые будут «преобразованы» в пустые строки в примечании. Кажется, что он не работает в любом случае после моего обновления, поэтому я хочу избавиться от этой функции. Я думаю, что он начинается в строке № 37, ищите #here !!! комментарии
новый код выглядит следующим образом:
#!/usr/bin/env python3
import time
import os
import sys
def help():
print ("memoir is a minimal cli diary")
print ("run script with -r argument to read notes")
print ("run script with -c argument to clear notes file")
print ("run script with -h argument for help")
# add the current local time to the entry header
lines = [ time.asctime() + '\n' + '------------------------\n' + '\n' ]
if len(sys.argv) >= 2:
if sys.argv[1] == '-r':
# read .memoir file
os.system('cat ~/.memoir')
print('\n')
exit(0)
if sys.argv[1] == '-h':
# print help
help()
exit(0)
if sys.argv[1] == '-c':
# clear .memoir file
os.system('> ~/.memoir')
exit(0)
else:
print("invalid argument, type m -h for help")
exit(0)
if len(sys.argv) > 1 and len(sys.argv) != 2: #here!!!
lines.append(' '.join(sys.argv[ 1: ]))
lines[-1] += '\n'
else:
while 1:
try:
line = input()
except EOFError:
break
# get more user input until an empty line
if len(line) == 0:
break
else:
lines.append(line + '\n')
# only write the entry if the user entered something
if len(lines) > 1:
memoir_path = os.path.expanduser('~/.memoir')
# prepend a seperator only if the file exists (there are entries already in there)
if os.path.exists(memoir_path):
lines.insert(0, '\n------------------------\n')
with open(memoir_path, 'a') as f:
f.writelines(lines)
if len(sys.argv) >= 2:
# clear .memoir file
if sys.argv[1] == '-c':
os.system('> ~/.memoir')
для использования аргументов командной строки как '-arg1 -arg2' Я бы предложил просмотреть модули' argparse' или 'docopt'. – albert