Expected behaviour
Run a program that reads a file stored in the same directory as the program.
Actual behaviour
VS Code is returning the following in the terminal:
Traceback (most recent call last):
File "/Filepath/10-1_learning_python.py", line 3, in <module>
with open(filename) as file_content:
FileNotFoundError: [Errno 2] No such file or directory: 'learning_python.txt'
Steps to reproduce:
I am trying to run a very simple Python program in VS Code. In the same subfolder I have the two following files:
- 10-1_learning_python.py
- learning_python.txt
This is the code in «10-1_learning_python.py»:
filename = 'learning_python.txt'
with open(filename) as file_content:
content = file_content.read()
print(content)
When running the code I get this error:
FileNotFoundError: [Errno 2] No such file or directory: ‘learning_python.txt’
This code works (using the very same directory and files) if I run it in other applications such as SublimeText.
Environment data
I am using macOS Catalina 10.15.5.
My VS Code version is as follows:
Version: 1.45.1
Commit: 5763d909d5f12fe19f215cbfdd29a91c0fa9208a
Date: 2020-05-14T08:33:47.663Z
Electron: 7.2.4
Chrome: 78.0.3904.130
Node.js: 12.8.1
V8: 7.8.279.23-electron.0
OS: Darwin x64 19.5.0Value of the
python.languageServer
setting:Microsoft
0 / 0 / 0 Регистрация: 03.06.2021 Сообщений: 2 |
|
1 |
|
30.11.2021, 21:17. Показов 3939. Ответов 5
Visual Studio не хочет запускать мой код. Запускаю в PyCharm’е все отлично работает, а вот VS code и python IDLE запускать не хотят. Подскажите, как исправить ошибку? Вот, что выдает терминал: Код PS C:UsersUserOneDriveРабочий столПрограммированиеPython 3.10Мини-проекты> & C:/Users/User/AppData/Local/Programs/Python/Python39/python.exe "c:/Users/User/OneDrive/абочий стол/рограммирование/Python 3.10/ини-проекты/random_8.py" C:UsersUserAppDataLocalProgramsPythonPython39python.exe: can't open file 'c:UsersUserOneDrive╨░╨▒╨╛╤З╨╕╨╣ ╤Б╤В╨╛╨╗╤А╨╛╨│╤А╨░╨╝╨╝╨╕╤А╨╛╨▓╨░╨╜╨╕╨╡Python 3.10╨╕╨╜╨╕-╨┐╤А╨╛╨╡╨║╤В╤Лrandom_8.py': [Errno 2] No such file or directory PS C:UsersUserOneDriveРабочий столПрограммированиеPython 3.10Мини-проекты> На кракозябры из-за кириллицы не смотрите. До этого и с ними всё работало. А потом я полез в PATH, чтобы настроить папку для того, чтобы библиотеки питоновские мог загрузить и после этого начал выдавать такую ошибку. Понимаю, что я скорее всего что-то натворил с «путем» к файлу. Нуждаюсь в вашей помощи
__________________
0 |
1726 / 966 / 198 Регистрация: 22.02.2018 Сообщений: 2,694 Записей в блоге: 6 |
|
30.11.2021, 22:00 |
2 |
Jesuslovesyou, Вы не указали версию Visual Studio. В последней версии Visual Studio есть такой дефект, она не видит настройки питона в PATH.
1 |
99 / 86 / 20 Регистрация: 10.09.2019 Сообщений: 708 |
|
30.11.2021, 22:21 |
3 |
Но я решил проблему, с помощью файла .ptf,Viktorrus, напомните пожалуйста что это за файл, или это файл конфигурации Visual Studio? Понял, это опечатка…pth
0 |
0 / 0 / 0 Регистрация: 03.06.2021 Сообщений: 2 |
|
30.11.2021, 22:58 [ТС] |
4 |
Вы не указали версию Visual Studio. Прошу прощения, версия — 1.62. Насчет PyCharm’а, я рано обрадовался, что там код работает. В PyCharm я только запускал скопированный код, который автоматически записывался в файл main.py. Этот файл — main.py — был автоматически создан в папке с PyCharm’ом и с его запуском проблем не должно быть, а в VisualStudio, я открывал файл из папки на рабочем столе. Но в любом случае, раньше я запускал в VS файлы с рабочего стола и всё отлично работало. Проблема точно в «пути» к файлу, но как её решить, пока не понимаю
0 |
1726 / 966 / 198 Регистрация: 22.02.2018 Сообщений: 2,694 Записей в блоге: 6 |
|
30.11.2021, 23:18 |
5 |
AlexMarkov, Да, опечатка. Должно быт сокращение от path, где отбрасывается гласная «а». Я же там дальше написал, как называется у меня файл, и там расширение правильное. Добавлено через 19 минут
но как её решить, пока не понимаю Я написал выше как. Создайте файл myconfig.pth. Разместите его туда, где у Вас python.exe , основная папка питона.
1 |
1726 / 966 / 198 Регистрация: 22.02.2018 Сообщений: 2,694 Записей в блоге: 6 |
|
01.12.2021, 08:08 |
6 |
версия — 1.62 Вы наверное что то путаете. У меня Microsoft Visual Studio Community 2019.
0 |
When I load files via Visual Studio Code, VScode can’t find directory.
I can run code without issue with terminal, result is:
young@young-desktop:/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials/10_RNN/ChatBot$ python text_load_text.py
['fijn', 'feijfaefn', 'efn', 'awefn', 'awen', 'gn', 'awegn', 'aen', 'wgn', 'awen', 'hn', 'awn', 'hn', 'awn', 'efn', 'awegn', 'wean', 'gawn', 'egn', 'n']
But with VScode:
young@young-desktop:/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials$ cd /media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials ; env "PYTHONIOENCODING=UTF-8" "PYTHONUNBUFFERED=1" /home/young/anaconda3/bin/python /home/young/.vscode/extensions/ms-python.python-2018.6.0/pythonFiles/PythonTools/visualstudio_py_launcher.py /media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials 39707 34806ad9-833a-4524-8cd6-18ca4aa74f14 RedirectOutput,RedirectOutput /media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials/10_RNN/ChatBot/text_load_text.py
Traceback (most recent call last):
File "/media/young/5e7be152-8ed5-483d-a8e8-b3fecfa221dc/text/mycodehtml/pracdl/golbin/TensorFlow-Tutorials/10_RNN/ChatBot/text_load_text.py", line 8, in <module>
with open('test.txt', 'r') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
What causes this issue?
test.txt file originally is intended to be located in ./data/test.txt
So I tested
with open('./data/test.txt', 'r') as f:
But it failed with VScode
So I tried to move test.txt file to working directory with trying:
with open('test.txt', 'r') as f:
and
with open('./test.txt', 'r') as f:
But all failed with VScode.
Table of Contents
Hide
- Python FileNotFoundError: [Errno 2] No such file or directory
- Example FileNotFoundError
- Misspelled file name
- Invalid file path or directory path
- Using a relative path
- Solution to FileNotFoundError: [Errno 2] No such file or directory
In Python, when you reference a file, it needs to exist. Otherwise, Python will return a FileNotFoundError: [Errno 2] No such file or directory.
In this tutorial, let’s look at what is FileNotFoundError: [Errno 2] No such file or directory error means and how to solve this in your code.
Python will raise FileNotFoundError when you use the OS library and try to read a file or write a file that does not exist using an open()
statement.
It is, of course, excluding you are creating a new file and writing content to the file. Any error message which states FileNotFoundError means that Python cannot find the path of the file you are referencing.
Example FileNotFoundError
The below code will list all the files in a specified folder. We will be using the OS module and os.listdir()
method to get a list of files in the specified folder.
import os
for f in os.listdir("/etc"):
print(f)
Output
Traceback (most recent call last):
File "Main.py", line 2, in <module>
for f in os.listdir("/etc/test"):
FileNotFoundError: [Errno 2] No such file or directory: '/etc/test'
Now you can see that Python is throwing FileNotFoundError: [Errno 2] No such file or directory since the folder reference is wrong here.
The possible reasons for this error could be as follows.
Misspelled file name
The error will often occur due to misspelled filenames, so providing the correct file name would solve the issue.
Invalid file path or directory path
Sometimes you might give a wrong file path or directory path which does not exist. It usually happens even with the network path when it’s unreachable. So ensure that the file path is correct and if you are placing the file in the network path, make sure it’s reachable and accessible.
Using a relative path
If you use a relative path, the file would be searched in the current working directory and not in the original path. So ensure you give an absolute path of the file to resolve the error.
Solution to FileNotFoundError: [Errno 2] No such file or directory
We will correct our above code by referencing the proper directory where the file exists. This time, we will also use an absolute path instead of a relative path to ensure it’s referencing the correct directory.
import os
for f in os.listdir("C:/Projects/Tryouts/etc"):
print(f)
Output
python.txt
index.md
Python Data Science Ebook.pdf
Srinivas Ramakrishna is a Solution Architect and has 14+ Years of Experience in the Software Industry. He has published many articles on Medium, Hackernoon, dev.to and solved many problems in StackOverflow. He has core expertise in various technologies such as Microsoft .NET Core, Python, Node.JS, JavaScript, Cloud (Azure), RDBMS (MSSQL), React, Powershell, etc.
Sign Up for Our Newsletters
Subscribe to get notified of the latest articles. We will never spam you. Be a part of our ever-growing community.
By checking this box, you confirm that you have read and are agreeing to our terms of use regarding the storage of the data submitted through this form.
Like any programming language, an error in python occurs when a given code fails to follow the syntax rules. When a code does not follow the syntax, python cannot recognize that segment of code, so it throws an error. Errors can be of different types, such as runtime error, syntax error, logical error, etc. IOError errno 2 no such file or directory is one such type of error. Let us first understand each individual term of the error.
Note : Starting from Python 3.3, IOError is an aliases of OSError
What is IOError?
An IOError is thrown when an input-output operation fails in the program. The common input-output operations are opening a file or a directory, executing a print statement, etc. IOError is inherited from the EnvironmentError. The syntax of IOError is:
IOError : [Error number] ‘Reason why the error occurred’: ‘name of the file because of which the error occurred’
Examples of IOError are :
- Unable to execute the open() statement because either the filename is incorrect or the file is not present in the specified location.
- Unable to execute the print() statements because either the disk is full or the file cannot be found
- The permission to access the particular file is not given.
What is errno2 no such file or directory?
The ‘errorno 2 no such file or directory‘ is thrown when you are trying to access a file that is not present in the particular file path or its name has been changed.
This error is raised either by ‘FileNotFoundError’ or by ‘IOError’. The ‘FileNotFoundError’ raises ‘errorno 2 no such file or directory‘ when using the os library to read a given file or a directory, and that operation fails.
The ‘IOError’ raises ‘errorno 2 no such file or directory‘ when trying to access a file that does not exist in the given location using the open() function.
Handling ‘IOError [errorno 2] no such file or directory’
‘IOError errorno 2 no such file or directory‘ occurs mainly while we are handling the open() function for opening a file. Therefore, we will look at several solutions to solve the above error.
We will check if a file exists, raise exceptions, solve the error occurring while installing ‘requirements.txt,’ etc.
Checking if the file exists beforehand
If a file or a directory does not exist, it will show ‘IOError [errorno 2] no such file or directory’ while opening it. Let us take an example of opening a file named ‘filename.txt’.
The given file does not exist and we shall see what happens if we try to execute it.
Since the above text file does not exist, it will throw the IOError.
Traceback (most recent call last): File "main.py", line 1, in <module> f = open('filename.txt') IOError: [Errno 2] No such file or directory: 'filename.txt'
To avoid the above error from being thrown, we will use several methods which will first check if the file exists or not. It will execute the open() function only if the file exists.
We have two modules containing functions for checking if a file exists.
- OS Module
- Pathlib Module
Using the OS Module
In the os module, there are three functions which can be used:
- os.path.isfile()
- os.path.isdir()
- os.path.exists()
To solve the IOError, we can use either of the above function in a condition statement. We will pass the pathname of the file as an argument to the above functions.
If the file or the directory exists, the function shall return True else False. Bypassing either of the above functions as the conditional statement ensures that python will open a file only if it exists, thus preventing an error from occurring.
We will use os.path.isfile() when we want to check if a file exists or not, os.path.isdir() to check if a directory exists or not and os.path.exists() to check if a path exists or not.
Since we want to check for a file, we can use either the os.path.isfile() function or os.path.exists() function. We shall apply the function to the above example.
import os path_name = "filename.txt" if os.path.isfile(path_name): print("File exists") f = open(path_name) #Execute other file operations here f.close() else: print("File does not exist! IOError has occured")
First, we have imported the os module. Then we have a variable named ‘path_name‘ which stores the path for the file.
We passed the path_name as an argument to the os.path.isfile() function. If the os.path.isfile() function returns a true value. Then it will print “File exists” and execute the other file operations.
If the file does not exist, then it will print the second statement in the else condition. Unlike the previous case, here, it will not throw an error and print the message.
File does not exist! IOError has occured
Similarly, we can also use os.path.exists() function.
Using the pathlib module
The pathlib module contains three functions – pathlib.Path.exists(), pathlib.Path.is_dir() and pathlib.Path.is_file().
We will use pathlib.Path.is_file() in this example. Just like the os module, we will use the function in an if conditional statement.
It will execute the open() function only if the file exists. Thus it will not throw an error.
from pathlib import Path path_name = "filename.txt" p = Path(path_name) if p.is_file(): print("File exists") f = open(path_name) #Execute other file operations here f.close() else: print("File does not exist! IOError has occured")
Since the file does not exist, the output is :
File does not exist! IOError has occured
Using try – except block
We can also use exception handling for avoiding ‘IOError Errno 2 No Such File Or Directory’. In the try block, we will try to execute the open() function.
If the file is present, it will execute the open() function and all the other file operations mentioned in the try block. But, if the file cannot be found, it will throw an IOError exception and execute the except block.
try: f = open("filename.txt") #Execute other operations f.close() except IOError as io: print(io)
Here, it will execute the except block because ‘filename.txt’ does not exist. Instead of throwing an error, it will print the IOError.
[Errno 2] No such file or directory: 'filename.txt'
We can also print a user defined message in the except block.
try: f = open("filename.txt") #Execute other operations f.close() except IOError: print("File does not exist. IOError has occured")
The output will be:
File does not exist. IOError has occured
IOError errno 2 no such file or directory in requirements.txt
Requirements.txt is a file containing all the dependencies in a project and their version details.
Basically, it contains the details of all the packages in python needed to run the project. We use the pip install command to install the requirements.txt file. But it shows the ‘IOError errno 2 no such file or directory’ error.
!pip install -r requirements.txt
The thrown error is:
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
To solve the above error, we use the pip freeze command. When we use pip freeze, the output will contain the package along with its version.
The output will be in a configuration that we will use with the pip install command.
pip freeze > requirements.txt
Now, we will try to execute the pip install command again. It will no longer throw errors and all the packages will be installed successfully.
Opening file in ‘w+’ mode
While trying to open a text file, the default mode will be read mode. In that case, it will throw the ‘IOError Errno 2 No Such File Or Directory’ error.
f = open("filename.txt") f.close() print("Successful")
The output is:
Traceback (most recent call last): File "main.py", line 1, in <module> f = open("filename.txt") IOError: [Errno 2] No such file or directory: 'filename.txt'
To solve the error, we can open the file in ‘w+’ mode. This will open the file in both – reading and writing mode. If the file does not exist, it will create a new file, and if the file exists, it will overwrite the contents of the file. This way, it will not throw an error.
f = open("filename.txt", 'w+') f.close() print("Successful")
The output is:
Successful
Apart from all the above methods, there are some ways to ensure that the IOError does not occur. You have to ensure that you are giving the absolute path as the path name and not simply the name of the file.
Also, see to that there are no escape sequences in the path name of this file.
For example : In path_name = "C:name.txt ", it will consider the 'n' from 'name.txt' as an escape sequence. So, it will not be able to find the file 'name.txt'.
Also, Read
- How to Solve “unhashable type: list” Error in Python
- How to solve Type error: a byte-like object is required not ‘str’
- Invalid literal for int() with base 10 | Error and Resolution
- How to Solve TypeError: ‘int’ object is not Subscriptable
What is the difference between FileNotFoundError and IOError
Both the errors occur when you are trying to access a file that is not present in the particular file path, or its name has been changed. The difference between the two is that FileNotFoundError is a type of OSError, whereas IOError is a type of Environment Error.
This sums up everything about IOError Errno 2 No Such File Or Directory. If you have any questions, do let us know in the comments below.
Until then, Keep Learning!