Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6919799
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 27, 20262026-05-27T10:02:45+00:00 2026-05-27T10:02:45+00:00

Just curious, is there any difference between the two ways below for file reading?

  • 0

Just curious, is there any difference between the two ways below for file reading? Eso. in terms of memory usage.

with open(...) as f:
    for line in f:
        <do something with line>

f=open(...)
  for line in f:
      #process line

Also I know for gzip file, the first one with ‘with’ cannot work.
thx

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-27T10:02:46+00:00Added an answer on May 27, 2026 at 10:02 am

    No, they’re quite identical, except that the first one makes sure the file is closed. The second does not. In other words, within the body of the with statement, f is just a file object which is exactly equivalent to the f object you get after just calling open in the second code snippet.

    As you might know (and if you do not, make sure to read the informative doc), the with statement accepts an object that implements the context manager interface and invokes the __enter__ method of the object on entry, and its __exit__ method when it’s done (whether naturally, or with an exception.

    Looking at the source code (Objects/fileobject.c), here’s the mapping (part of the file_methods structure) for these special methods:

    {"__enter__", (PyCFunction)file_self,     METH_NOARGS,  enter_doc},
    {"__exit__",  (PyCFunction)file_exit,     METH_VARARGS, exit_doc},
    

    So, the file object’s __enter__ method just returns the file object itself:

    static PyObject *
    file_self(PyFileObject *f)
    {
        if (f->f_fp == NULL)
            return err_closed();
        Py_INCREF(f);
        return (PyObject *)f;
    }
    

    While its __exit__ method closes the file:

    static PyObject *
    file_exit(PyObject *f, PyObject *args)
    {
        PyObject *ret = PyObject_CallMethod(f, "close", NULL);
        if (!ret)
            /* If error occurred, pass through */
            return NULL;
        Py_DECREF(ret);
        /* We cannot return the result of close since a true
         * value will be interpreted as "yes, swallow the
         * exception if one was raised inside the with block". */
        Py_RETURN_NONE;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Just curious what the difference is between these two in a Rails gem: write_inheritable_attribute(:sample,
I'm just curious to know if there is any significant/serious difference in these three
Just a curious question but is there any programs that can help/aid you when
Just because I'm curious--is there any C analog to the functionality of the STL
I am just curious if there is a way to swap the two stings
I was curious if anyone had any hard numbers around the performance difference between
Just curious if there is anyway to display an objects retain count using NSLog.
I'm just curious if there's a reason why in order to represent -1 in
I'm just curious, but is there a name for the process using print statements
Is there a tool to integrate Mercurial into Visual Studio? I am just curious.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.