как сохранить входные данные в текстовый файл. В командной строке Linux - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь создать список контактов в Python.И я пытаюсь сохранить введенные данные в текстовом формате.и когда пользователь хотел найти контакт из списка, я хочу, чтобы из программы читал текстовый файл и отвечал пользователю.Спасибо

с небольшим исследованием в интернете, я нашел:

with open('list','w') as f:
    f.write()

эта техника.Но я новичок в Python, спасибо за помощь.

import optparse

def contact_add():
    contact_list = optparse.OptionParser()
    contact_list.add_option("-n","--name",dest="name",help="name to enter")
    contact_list.add_option("-t","--telephone",dest="telephone",help="tel no to enter")

    with open('list','w') as f:
        return f.write(contact_list.name,contact_list.telephone)

Командная строка:

python contact.py -n hanter -t 0555

Это вывод при запуске:

Traceback (most recent call last):
  File "contact.py", line 13, in <module>
    contact_add()
  File "contact.py", line 11, in contact_add
    return f.write(contact_list.name,contact_list.telephone)
AttributeError: 'OptionParser' object has no attribute 'name'

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

contact_list - это объект OptionParser. Вы еще не проанализировали варианты. Попробуйте это:

import optparse

def contact_add():
    contact_list = optparse.OptionParser()
    contact_list.add_option("-n","--name",dest="name",help="name to enter")
    contact_list.add_option("-t","--telephone",dest="telephone",help="tel no to enter")
    parsed_contacts, _ = contact_list.parse_args()

    with open('list','w') as f:
        f.write(parsed_contacts.name+"\t"+parsed_contacts.telephone)

contact_add()
  • contact_list.parse_args() разбирает аргументы.
  • Вам не нужно return
  • print принимает один аргумент; Я соединил два с вкладкой

И, как говорится в комментарии @Eular, optparse устарел, вы должны использовать argparse.

0 голосов
/ 06 мая 2019

Вам нужно вызвать .parse_args() в парсере аргументов (contact_list в вашем случае), прежде чем разобранные аргументы станут доступны.

Однако optparse устарела , и вам следуетперейти к argparse, который работает в основном так же.

    (options, arguments) = contact_list.parse_args()
    with open('list','w') as f:
        f.write(options.name, options.telephone)
...