Python open file with program

Open a File in Python

In this tutorial, you’ll learn how to open a file in Python.

The data can be in the form of files such as text, csv, and binary files. To extract data from these files, Python comes with built-in functions to open a file and then read and write the file’s contents.

After reading this tutorial, you can learn: –

  • How to open a file in Python using both relative and absolute path
  • Different file access modes for opening a file
  • How to open a file for reading, writing, and appending.
  • How to open a file using the with statement
  • Importance of closing a file

Table of contents

Access Modes for Opening a file

The access mode parameter in the open() function primarily mentions the purpose of opening the file or the type of operation we are planning to do with the file after opening. in Python, the following are the different characters that we use for mentioning the file opening modes.

sample text file

# Opening the file with absolute path fp = open(r'E:\demos\files\sample.txt', 'r') # read file print(fp.read()) # Closing the file after reading fp.close() # path if you using MacOs # fp = open(r"/Users/myfiles/sample.txt", "r")
Welcome to PYnative.com This is a sample.txt

Opening a File with Relative Path

A relative path is a path that starts with the working directory or the current directory and then will start looking for the file from that directory to the file name.

Читайте также:  All sorting program in java

For example, reports/sample.txt is a relative path. In the relative path, it will look for a file into the directory where this script is running.

# Opening the file with relative path try: fp = open("sample.txt", "r") print(fp.read()) fp.close() except FileNotFoundError: print("Please check the path.")

Handling the FileNotFoundError

In case we are trying to open a file that is not present in the mentioned path then we will get a FileNotFoundError .

fp = open(r'E:\demos\files\reports.txt', 'r') print(f.read())
FileNotFoundError: [Errno 2] No such file or directory: 'E:\demos\files\reports.txt'

We can handle the file not found error inside the try-except block. Let us see an example for the same. Use except block to specify the action to be taken when the specified file is not present.

try: fp = open(r'E:\PYnative\reports\samples.txt', 'r') print(fp.read()) fp.close() except IOError: print("File not found. Please check the path.") finally: print("Exit")
File not found. Please check the path. Exit

File open() function

Python provides a set of inbuilt functions available in the interpreter, and it is always available. We don’t have to import any module for that. We can open a file using the built-in function open().

Syntax of the file open() function

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

It return the file object which we can sue to read or write to a file.

Let us see the parameters we can pass to the open() function to enhance the file operation.

sample text file after writing

Closing a File

We need to make sure that the file will be closed properly after completing the file operation. It is a bad practice to leave your files open.

In Python, It is very important to close a file once the job is done mainly for the following reasons: –

  • It releases the resources that have been tied up with the file. By this space in the RAM can be better utilized and ensures a better performance.
  • It ensures better garbage collection.
  • There is a limit to the number of open files in an application. It is always better to close the file to ensure that the limit is not crossed.
  • If you open the file in write or read-write mode, you don’t know when data is flushed.

A file can be closed just by calling the close() function as follows.

# Opening the file to read the contents f = open("sample2.txt", "r") print(f.read()) # Closing the file once our job is done f.close()

Opening file using with statement

We can open a file using the with statement along with the open function. The general syntax is as follows.

with open(__file__, accessmode) as f:

The following are the main advantages of opening a file using the with statement

  • The with statement simplifies exception handling by encapsulating common preparation and cleanup tasks.
  • This also ensures that a file is automatically closed after leaving the block.
  • As the file is closed automatically it ensures that all the resources that are tied up with the file are released.

Let us see how we can the with statement for opening a file with an example. Consider there are two files ‘sample.txt’ and ‘sample2.txt’ and we want to copy the contents of the first file to the second.

# Opening file with open('sample.txt', 'r', encoding='utf-8') as infile, open('sample2.txt', 'w') as outfile: # read sample.txt an and write its content into sample2.txt for line in infile: outfile.write(line) # Opening the file to read the contents f = open("Sample2.txt", "r") print(f.read()) f.close()
Welcome to PYnative.com File created to demonstrate file handling in Python

Here we can see that the contents of the sample2.txt has been replaced by the contents of sample.txt.

Creating a new file

We can create a new file using the open() function by setting the x mode. This method will ensure that the file doesn’t already exist and then create a new file. It will raise the FileExistsError if the file already exists.

Example: Creating a new file.

try: # Creating a new file with open("sample3.txt", "x") as fp: fp.write("Hello World! I am a new file") # reading the contents of the new file fp = open("sample3.txt", "r") print(fp.read()) except FileExistsError: print("The file already exists")
Hello World! I am a new file

Opening a File for multiple operations

In Python, we can open a file for performing multiple operations simultaneously by using the ‘+’ operator. When we pass r+ mode then it will enable both reading and writing options in the file. Let us see this with an example.

with open("Sample3.txt", "r+") as fp: # reading the contents before writing print(fp.read()) # Writing new content to this file fp.write("\nAdding this new content")

Opening a Binary file

Binary files are basically the ones with data in the Byte format (0’s and 1’s). This generally doesn’t contain the EOL(End of Line) so it is important to check that condition before reading the contents of the file.

We can open and read the contents of the binary file as below.

with open("sample.bin", "rb") as f: byte_content = f.read(1) while byte_content: # Printing the contents of the file print(byte_content) 

Summary

In this tutorial, we have covered how to open a file using the different access modes. Also, we learned the importance of opening a file using the ‘with’ statement.

Did you find this page helpful? Let others know about it. Sharing helps me continue to create free Python resources.

About Vishal

I’m Vishal Hule, Founder of PYnative.com. I am a Python developer, and I love to write articles to help students, developers, and learners. Follow me on Twitter

Python Exercises and Quizzes

Free coding exercises and quizzes cover Python basics, data structure, data analytics, and more.

  • 15+ Topic-specific Exercises and Quizzes
  • Each Exercise contains 10 questions
  • Each Quiz contains 12-15 MCQ

Источник

Python 101: How to Open a File or Program

When I began learning Python, one of the first things I needed to know how to do was open a file. Now, the term “open a file” can mean different things depending on the context. Sometimes it means to actually open the file with Python and read from it, like with a text file. Other times, it means “to open the file in its default program”; and sometimes it means, “open the file in the program I specify”. So, when you go looking for how to do the latter two, you need to know how to ask Google just the right question or all you’ll end up with is learning how to open and read a text file.

In this article, we’re going to cover all three and we’ll also show how to open (or run) programs that are already installed on your PC. Why? Because that topic is also one of the first things I needed to learn and it uses some of the same techniques.

How to Open a Text File

Let’s start by learning how to open a file with Python. In this case, what we mean is to actually use Python to open it and not some other program. For that, we have two choices (in Python 2.x): open or file. Let’s take a look and see how it’s done!

# the open keyword opens a file in read-only mode by default f = open("path/to/file.txt") # read all the lines in the file and return them in a list lines = f.readlines() f.close()

As you can see, it’s really quite easy to open and read a text file. You can replace the “open” keyword with the “file” keyword and it will work the same. If you want to be extra explicit, you can write the open command like this instead:

f = open("path/to/file.txt", mode="r")

The “r” means to just read the file. You can also open a file in “rb” (read binary), “w” (write), “a” (append), or “wb” (write binary). Note that if you use either “w” or “wb”, Python will overwrite the file, if it exists already or create it if the file doesn’t exist.

If you want to read the file, you can use the following methods:

  • read – reads the whole file and returns the whole thing in a string
  • readline – reads the first line of the file and returns it as a string
  • readlines – reads the entire file and returns it as a list of strings

You can also read a file with a loop, like this:

f = open("path/to/file.txt") for line in f: print line f.close()

Pretty cool, huh? Python rocks! Now it’s time to take a look at how to open a file with another program.

Open a file with its own program

Python has a simple method for opening a file with its default program. It goes something like this:

import os os.startfile(path)

Yes, it’s that easy, if you’re on Windows. If you’re on Unix or Mac, you’ll need the subprocess module or “os.system”. Of course, if you’re a real geek, then you probably have multiple programs that you might want to use to open a specific file. For example, I might want to edit my JPEG file with Picasa, Paint Shop Pro, Lightroom, Paint.NET or a plethora of other programs, but I don’t want to change my default JPEG editing program. How do we solve this with Python? We use Python’s subprocess module! Note: If you want to go old school, you can also use os.popen* or os.system, but subprocess is supposed to supersede them.

import subprocess pdf = "path/to/pdf" acrobat_path = r'C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe' subprocess.Popen(f" ")

You can also write the last line like this: subprocess.Popen([acrobatPath, pdf]). Suffice it to say, using the subprocess module is also a breeze. There are many other ways to use the subprocess module, but this is one of its primary tasks. I usually use it to open a specific file (like above) or to open a program for me with specific arguments applied. I also use subprocess’s “call” method, which causes the Python script to wait for the “called” application to complete before continuing. You can also communicate with the processes that subprocess launches, if you have the know how.

Wrapping Up

As usual, Python comes through with easy ways to accomplish the tasks thrown at it. I have found very little that Python can’t handle eloquently and in an easy-to-understand way. I hope you find this helpful when you’re starting out and need to know how to open a file or program.

Further Reading

Источник

Оцените статью