В чем разница между .DictWriter () и .write () в Python? - PullRequest
0 голосов
/ 23 марта 2020

Когда я узнал об открытии файлов в Python, я натолкнулся на .write и .DictWriter. Раздел «Файлы» был разделен на 3 части: обычные файлы, файлы CSV и файлы JSON.

Мой вопрос: можем ли мы использовать .write () в файле CSV и .DictWriter () в обычном TXT-файл?

Из моих заметок у меня есть:

#Writing a New File

with open('generated_file.txt', 'w') as gen_file:
  gen_file.write("What an incredible file!")

с использованием .write () для обычного TXT-файла

и:

#Writing a CSV File

big_list = [{'name': 'Fredrick Stein', 'userid': 6712359021, 'is_admin': False}, {'name': 'Wiltmore Denis', 'userid': 2525942, 'is_admin': False}, {'name': 'Greely Plonk', 'userid': 15890235, 'is_admin': False}, {'name': 'Dendris Stulo', 'userid': 572189563, 'is_admin': True}] 
#In our code above we had a set of dictionaries with the same keys for each, a prime candidate for a CSV.

import csv
#We import the csv library,

with open('output.csv', 'w') as output_csv:
#and then open a new CSV file in write-mode by passing the 'w' argument to the open() function.

  fields = ['name', 'userid', 'is_admin']
#We then define the fields we’re going to be using into a variable called fields.

  output_writer = csv.DictWriter(output_csv, fieldnames=fields)
#We then instantiate our CSV writer object and pass two arguments. 
#The first is output_csv, the file handler object. 
#The second is our list of fields fields which we pass to the keyword parameter fieldnames.

  output_writer.writeheader()
#Now that we’ve instantiated our CSV file writer, we can start adding lines to the file itself! 
#First we want the headers, so we call .writeheader() on the writer object. 
#This writes all the fields passed to fieldnames as the first row in our file.

  for item in big_list:
#Then we iterate through our big_list of data. 
#Each item in big_list is a dictionary with each field in fields as the keys.

    output_writer.writerow(item)
#We call output_writer.writerow() with the item dictionaries which writes each line to the CSV file.

используя .DictWriter () для файла CSV

Можем ли мы использовать эти методы записи взаимозаменяемо в файлах txt и csv?

1 Ответ

0 голосов
/ 23 марта 2020

Мой вопрос: можем ли мы использовать .write () в CSV-файле и .DictWriter () в обычном текстовом файле?

Не совсем.

Технически файл CSV по-прежнему является файлом, поэтому вы можете манипулировать им просто так, хотя этого не следует делать, поскольку он не будет правильно обрабатывать такие проблемы, как экранирование.

csv.writer и csv.DictWriter специализируются на преобразует строки (соответственно списки и вхождения) в данные CSV, правильно экранированные в соответствии с диалектом . Поэтому не имеет смысла использовать их для файлов, отличных от CSV, хотя CSV, технически, «обычный текстовый файл» в том смысле, что они представляют собой просто странно отформатированный текст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...