Должен ли я использовать `with open (file):` if I `pd.read_csv`? - PullRequest
0 голосов
/ 06 декабря 2018

Контекст

Я узнал , что следует использовать with open при чтении файлов на Python:

import csv

with open('employee_birthday.txt') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    line_count = 0
    for row in csv_reader:
        if line_count == 0:
            print(f'Column names are {", ".join(row)}')
            line_count += 1
        else:
            print(f'\t{row[0]} works in the {row[1]} department, and was born in {row[2]}.')
            line_count += 1
    print(f'Processed {line_count} lines.')

( source )

Однако я видел несколько примеров, когда эта структура не используется при использовании pandas 'pd.read_csv:

# Load the Pandas libraries with alias 'pd' 
import pandas as pd 
# Read data from file 'filename.csv' 
# (in the same directory that your python process is based)
# Control delimiters, rows, column names with read_csv (see later) 
data = pd.read_csv("filename.csv") 
# Preview the first 5 lines of the loaded data 
data.head()

( source )

Вопрос

Должен ли я использовать with open(): при чтении файлов .csv с использованием панд 'pd.read_csv?
(или pd.read_csv уже достаточно умен?)

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

pd.read_csv () достаточно умен, чтобы позаботиться об открытии файла.Он достаточно умен, чтобы различать файловый объект и путь к файлу.

0 голосов
/ 06 декабря 2018

with open('<>') as file: метод позволяет пользователям выполнять построчные операции для одной или нескольких строк в файле .

pandas обрабатывает файлы по-разному. Когда вы импортируете файл в фрейм данных pandas, он импортирует все содержимое файла в фрейм данных .Открытие и закрытие файла указывать не нужно, так как вы будете обрабатывать там фрейм данных.

Следовательно, при чтении файлов в pandas dataframe, with open ()не требуется.

0 голосов
/ 06 декабря 2018

Когда вы импортируете файл в pandas, нет необходимости открывать конкретный файл.Вы можете напрямую импортировать в pandas dataframe и начать использовать dataframe.

exam_data = pd.read_csv('exams.csv', quotechar='"')
exam_data

, поэтому достаточно ответить на ваш вопрос pd.read_csv.

...