PYTHON: операция ввода / вывода для закрытого файла - PullRequest
0 голосов
/ 04 апреля 2019

Я верю, что все дело в отступе, но я не уверен, как правильно сделать отступ, пожалуйста, помогите мне.

import csv


with open('abbreviations.csv', mode='r') as infile:
   reader = csv.reader(infile)


with open('abbreviations_new.csv', mode='w') as outfile:
   writer = csv.writer(outfile)

   mydict = {rows[0]:rows[1] for rows in reader}

   print(len(mydict))
   print(mydict['v'])
   mydict['MIS'] = 'Management Information System'
   print(mydict['TA'])
   mydict['TA'] = 'teaching assistant'
   print(mydict['TA'])
   print(mydict['flower'])
   del mydict['flower']

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Попробуйте это так

import csv

with open('abbreviations.csv', mode='r') as infile:
   reader = csv.reader(infile)

   with open('abbreviations_new.csv', mode='w') as outfile:
       writer = csv.writer(outfile)

       mydict = {rows[0]:rows[1] for rows in reader}

       print(len(mydict))
       print(mydict['v'])
       mydict['MIS'] = 'Management Information System'
       print(mydict['TA'])
       mydict['TA'] = 'teaching assistant'
       print(mydict['TA'])
       print(mydict['flower'])
       del mydict['flower']

При использовании с открытым файл автоматически закрывается, когда цикл заканчивается.

0 голосов
/ 04 апреля 2019

Вы можете использовать

with open('abbreviations.csv', mode='r') as infile, open(  # you can put two opens after 
          'abbreviations_new.csv', mode='w') as outfile:   # one with statement
    reader = csv.reader(infile)
    writer = csv.writer(outfile)

    mydict = {rows[0]:rows[1] for rows in reader}

    print(len(mydict))
    print(mydict['v'])
    mydict['MIS'] = 'Management Information System'
    print(mydict['TA'])
    mydict['TA'] = 'teaching assistant'
    print(mydict['TA'])
    print(mydict['flower'])
    del mydict['flower']

# on this indentation level the files are closed

Как только вы оставляете отступ для with open(...) as f:, файл автоматически закрывается.

Вы можете найти больше информации здесь:

...