search
HomeBackend DevelopmentPython TutorialHow to Read and Write CSV Files in Python

The CSV format is the most commonly used import and export format for databases and spreadsheets. This tutorial will give an introduction to the csv module in Python. You will learn about all the functions and classes that it makes available for you to read and write data to CSV files. I've also included some working examples to show you how to read and write data to an actual CSV file in Python.

What Is a CSV File?

The term CSV stands for Comma Separated Values. A CSV format file allows data to be saved in a tabular structure with a .csv extension. CSV files have been used extensively in e-commerce applications because they are considered very easy to process. Some of the areas where they have been used include:

  • importing and exporting customer data
  • importing and exporting products
  • exporting orders
  • exporting e-commerce analytic reports

Reader and Writer Functions

The csv module has several functions and classes available for working with CSV files. Let's begin by learning how to use the writer() functions.

csv.reader() function takes the following parameters:
  • __next__() method is called.
  • list_dialects() function.
  • csv.reader() function.
    import csv<br><br>with open('people.csv', newline='') as File:  <br>    reader = csv.reader(File)<br>    for row in reader:<br>        print(row)<br>

    Did you notice the open() while opening example.csv? That's ideally how you should open a csv.writer

This function returns a writer object that has a bunch of helper methods to help you write your data into the CSV file. This function is similar to the write() method. Again, you should open it using the DictReader and DictReader and DictReader

The fieldnames parameter, the values in the first row will be used as keys.

Here is a very basic example of reading the contents of a file called people.csv using the fieldnames parameter. What happens if that's not the case? There are two possibilities here.

First, a row that you are reading has more fields than those in restkey parameter. Second, a row has fewer fields than those in restval parameter.

DictWriter class creates an object which maps dictionaries onto rows that you want to output or write to your file. Just like fieldnames as its second parameter. The order of different fields inside writerow() method.

Unlike the fieldnames parameter in fieldnames parameter will clear any ambiguity around the usage of those keys.

The dictionaries that you want to write to a CSV file can have a missing key that is present in restval parameter. If any dictionary has an extra key that is not in extrasaction key to specify what to do. The default behavior is to raise a reader or delimiter: A one-character string used to separate fields. It defaults to quotechar: A one-character string used to quote fields containing special characters. This includes the quotechar character. It defaults to doublequote: Controls how instances of quotechar appearing inside a field should be quoted. It can be False. Keep in mind that you will have to set a value of escapechar if doublequote is set to escapechar: A string used by the writer to escape the delimiter if quoting is set to lineterminator: A string used to terminate lines produced by the 'rn'.

  • True, any white space immediately following the delimiter is ignored.
  • quoting: Controls when quotes should be generated when reading or writing to a CSV.
  • The quoting attribute can have one of the four possible values. These are:

    • writer to quote all fields.
    • writer to only quote those fields which contain a special character like the delimiter or the QUOTE_NONNUMERIC: This tells the QUOTE_NONE: This tells the csv.reader
      import csv<br><br>with open('people.csv', newline='') as File:  <br>    reader = csv.reader(File)<br>    for row in reader:<br>        print(row)<br>

      In the code above, we import the csv module and then open our CSV file as csv.reader() function to extract the data into the object. We then iterate over the DictReader class allows us to read a CSV file by mapping the data to a dictionary instead of returning a list as in the case of the DictReader class.

      import csv<br> <br>with open('state-data.csv', newline='') as state_file:<br>    reader = csv.reader(state_file)<br>    for row in reader:<br>        print(row)<br>

      As usual, we first import the csv module. We then define the reader object and use the DictReader class is better because it outputs our data as a dictionary, which can be easier to work with in certain situations.

      We did not pass any value for the DictReader used the fields in the first row as dictionary keys. Let's pass a list as the value for the fieldnames to show you how restkey parameter because we have more items in each row than the fields in fieldnames, the first row is no longer used to create the keys and is output as a dictionary. Also note that all the extra values in each row are now being stored in a list and assigned to the key Extra Data in the dictionary.

      Writing to a CSV File

      Let's now see how to go about writing data into a CSV file using the csv.writer

      The code below writes the data defined to the writerow() method because there is a single row whose data we want to write to the file.

      Here is our CSV with the data we have written to it.

      How to Read and Write CSV Files in Python

      Writing to a CSV File Using DictWriter

      Let's write the following data to our CSV file. It contains information about three different US states in a list, with individual elements being a dictionary.

      import csv<br><br>with open('people.csv', newline='') as File:  <br>    reader = csv.reader(File)<br>    for row in reader:<br>        print(row)<br>

      The code is as shown below.

      import csv<br> <br>with open('state-data.csv', newline='') as state_file:<br>    reader = csv.reader(state_file)<br>    for row in reader:<br>        print(row)<br>

      We first define the fieldnames as a list and store them in the writer object know what the heading of each column would be in the CSV file. The writerows() is that the rows that we want to write are iterable.

      Each individual row itself should also be an iterable of strings or numbers if we use the fieldnames to strings or numbers for the DictWriter class offers a solution. For missing keys, we can simply provide a default value using the extrasaction parameter to tell ValueError by default.

      Here is how to write to all the rows at once.

      import csv<br><br>with open('state-data.csv', newline='') as state_file:<br>    reader = csv.DictReader(state_file)<br>    for row in reader:<br>        print(row)<br>

      Our CSV file will look like this after all the writing operations:

      How to Read and Write CSV Files in Python

      Conclusion

      This tutorial has covered most of what is required to be able to successfully read and write to a CSV file using the different functions and classes provided by Python. CSV files have been widely used in software applications because they are easy to read and manage and their small size makes them relatively fast to process and transfer.

      Learn Python

      Learn Python with our complete Python tutorial guide, whether you're just getting started or you're a seasoned coder looking to learn new skills.

      This post has been updated with contributions from Monty Shokeen. Monty is a full-stack developer who also loves to write tutorials and to learn about new JavaScript libraries.

    The above is the detailed content of How to Read and Write CSV Files in Python. For more information, please follow other related articles on the PHP Chinese website!

    Statement
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Python vs. C  : Understanding the Key DifferencesPython vs. C : Understanding the Key DifferencesApr 21, 2025 am 12:18 AM

    Python and C each have their own advantages, and the choice should be based on project requirements. 1) Python is suitable for rapid development and data processing due to its concise syntax and dynamic typing. 2)C is suitable for high performance and system programming due to its static typing and manual memory management.

    Python vs. C  : Which Language to Choose for Your Project?Python vs. C : Which Language to Choose for Your Project?Apr 21, 2025 am 12:17 AM

    Choosing Python or C depends on project requirements: 1) If you need rapid development, data processing and prototype design, choose Python; 2) If you need high performance, low latency and close hardware control, choose C.

    Reaching Your Python Goals: The Power of 2 Hours DailyReaching Your Python Goals: The Power of 2 Hours DailyApr 20, 2025 am 12:21 AM

    By investing 2 hours of Python learning every day, you can effectively improve your programming skills. 1. Learn new knowledge: read documents or watch tutorials. 2. Practice: Write code and complete exercises. 3. Review: Consolidate the content you have learned. 4. Project practice: Apply what you have learned in actual projects. Such a structured learning plan can help you systematically master Python and achieve career goals.

    Maximizing 2 Hours: Effective Python Learning StrategiesMaximizing 2 Hours: Effective Python Learning StrategiesApr 20, 2025 am 12:20 AM

    Methods to learn Python efficiently within two hours include: 1. Review the basic knowledge and ensure that you are familiar with Python installation and basic syntax; 2. Understand the core concepts of Python, such as variables, lists, functions, etc.; 3. Master basic and advanced usage by using examples; 4. Learn common errors and debugging techniques; 5. Apply performance optimization and best practices, such as using list comprehensions and following the PEP8 style guide.

    Choosing Between Python and C  : The Right Language for YouChoosing Between Python and C : The Right Language for YouApr 20, 2025 am 12:20 AM

    Python is suitable for beginners and data science, and C is suitable for system programming and game development. 1. Python is simple and easy to use, suitable for data science and web development. 2.C provides high performance and control, suitable for game development and system programming. The choice should be based on project needs and personal interests.

    Python vs. C  : A Comparative Analysis of Programming LanguagesPython vs. C : A Comparative Analysis of Programming LanguagesApr 20, 2025 am 12:14 AM

    Python is more suitable for data science and rapid development, while C is more suitable for high performance and system programming. 1. Python syntax is concise and easy to learn, suitable for data processing and scientific computing. 2.C has complex syntax but excellent performance and is often used in game development and system programming.

    2 Hours a Day: The Potential of Python Learning2 Hours a Day: The Potential of Python LearningApr 20, 2025 am 12:14 AM

    It is feasible to invest two hours a day to learn Python. 1. Learn new knowledge: Learn new concepts in one hour, such as lists and dictionaries. 2. Practice and exercises: Use one hour to perform programming exercises, such as writing small programs. Through reasonable planning and perseverance, you can master the core concepts of Python in a short time.

    Python vs. C  : Learning Curves and Ease of UsePython vs. C : Learning Curves and Ease of UseApr 19, 2025 am 12:20 AM

    Python is easier to learn and use, while C is more powerful but complex. 1. Python syntax is concise and suitable for beginners. Dynamic typing and automatic memory management make it easy to use, but may cause runtime errors. 2.C provides low-level control and advanced features, suitable for high-performance applications, but has a high learning threshold and requires manual memory and type safety management.

    See all articles

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Atom editor mac version download

    Atom editor mac version download

    The most popular open source editor

    SublimeText3 Linux new version

    SublimeText3 Linux new version

    SublimeText3 Linux latest version

    mPDF

    mPDF

    mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    SecLists

    SecLists

    SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.