File not found error питон

I'm trying to write a simple program to read a file and search for a word then print how many times that word is found in the file. Every time I type in "test.rtf" (which is the name of my

I’m trying to write a simple program to read a file and search for a word then print how many times that word is found in the file. Every time I type in «test.rtf» (which is the name of my document) I get this error:

Traceback (most recent call last):
  File "/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/How many? (Python).py", line 9, in <module>
    fileScan= open(fileName, 'r')  #Opens file
FileNotFoundError: [Errno 2] No such file or directory: 'test.rtf'

In class last semester, I remember my professor saying you have to save the file in a specific place? I’m not sure if he really said that though, but I’m running apple OSx if that helps.

Here’s the important part of my code:

fileName= input("Please enter the name of the file you'd like to use.")
fileScan= open(fileName, 'r')  #Opens file

mkrieger1's user avatar

mkrieger1

16.9k4 gold badges51 silver badges58 bronze badges

asked Jul 15, 2013 at 16:13

Ashley Elisabeth Stallings's user avatar

1

If the user does not pass the full path to the file (on Unix type systems this means a path that starts with a slash), the path is interpreted relatively to the current working directory. The current working directory usually is the directory in which you started the program. In your case, the file test.rtf must be in the same directory in which you execute the program.

You are obviously performing programming tasks in Python under Mac OS. There, I recommend to work in the terminal (on the command line), i.e. start the terminal, cd to the directory where your input file is located and start the Python script there using the command

$ python script.py

In order to make this work, the directory containing the python executable must be in the PATH, a so-called environment variable that contains directories that are automatically used for searching executables when you enter a command. You should make use of this, because it simplifies daily work greatly. That way, you can simply cd to the directory containing your Python script file and run it.

In any case, if your Python script file and your data input file are not in the same directory, you always have to specify either a relative path between them or you have to use an absolute path for one of them.

wjandrea's user avatar

wjandrea

26.2k8 gold badges57 silver badges78 bronze badges

answered Jul 15, 2013 at 16:17

Dr. Jan-Philip Gehrcke's user avatar

0

Is test.rtf located in the same directory you’re in when you run this?

If not, you’ll need to provide the full path to that file.

Suppose it’s located in

/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/data

In that case you’d enter

data/test.rtf

as your file name

Or it could be in

/Users/AshleyStallings/Documents/School Work/Computer Programming/some_other_folder

In that case you’d enter

../some_other_folder/test.rtf

adhaamehab's user avatar

answered Jul 15, 2013 at 16:18

Jon Kiparsky's user avatar

Jon KiparskyJon Kiparsky

7,4142 gold badges22 silver badges38 bronze badges

0

A good start would be validating the input. In other words, you can make sure that the user has indeed typed a correct path for a real existing file, like this:

import os
fileName = input("Please enter the name of the file you'd like to use.")
while not os.path.isfile(fileName):
    fileName = input("Whoops! No such file! Please enter the name of the file you'd like to use.")

This is with a little help from the built in module os, That is a part of the Standard Python Library.

wjandrea's user avatar

wjandrea

26.2k8 gold badges57 silver badges78 bronze badges

answered Jul 15, 2013 at 16:27

user1555863's user avatar

1

As noted above the problem is in specifying the path to your file.
The default path in OS X is your home directory (/Users/macbook represented by ~ in terminal …you can change or rename the home directory with the advanced options in System Preferences > Users & Groups).

Or you can specify the path from the drive to your file in the filename:

path = "/Users/macbook/Documents/MyPython/"
myFile = path + fileName

You can also catch the File Not Found Error and give another response using try:

try:
    with open(filename) as f:
        sequences = pick_lines(f)
except FileNotFoundError:
    print("File not found. Check the path variable and filename")
    exit()

answered Sep 28, 2018 at 11:12

Spookpadda's user avatar

You might need to change your path by:

import os
path=os.chdir(str('Here_should_be_the_path_to_your_file')) #This command changes directory

This is what worked for me at least! Hope it works for you too!

answered Feb 19, 2021 at 7:55

RandML000's user avatar

RandML000RandML000

111 silver badge4 bronze badges

Difficult to give code examples in the comments.

To read the words in the file, you can read the contents of the file, which gets you a string — this is what you were doing before, with the read() method — and then use split() to get the individual words.
Split breaks up a String on the delimiter provided, or on whitespace by default. For example,

"the quick brown fox".split()

produces

['the', 'quick', 'brown', 'fox']

Similarly,

fileScan.read().split()

will give you an array of Strings.
Hope that helps!

answered Jul 15, 2013 at 16:52

Jon Kiparsky's user avatar

Jon KiparskyJon Kiparsky

7,4142 gold badges22 silver badges38 bronze badges

0

First check what’s your file format(e.g: .txt, .json, .csv etc ),

If your file present in PWD , then just give the name of the file along with the file format inside either single(»)or double(«») quote and the appropriate operation mode as your requirement

e.g:

with open('test.txt','r') as f: data=f.readlines() for i in data: print(i)
If your file present in other directory, then just give the full path name where is your file is present and file name along with file format of the file inside either single(»)or double(«») quote and the appropriate operation mode as your requirement.

If it showing unicode error just put either r before quote of file path or else put ‘/’ instead of »

with open(r'C:UserssomanDesktoptest.txt','r') as f: data=f.readlines() for i in data: print(i)

answered Nov 3, 2021 at 7:08

SOMANATH OJHA's user avatar

The mistake I did was
my code :

x = open('python.txt')

print(x)

But the problem was in file directory ,I saved it as python.txt instead of just python .

So my file path was
->C:UsersnoobDesktopPythonCourse 2python.txt.txt

That is why it was giving a error.

Name your file without .txt it will run.

Jamiu S.'s user avatar

Jamiu S.

5,9854 gold badges9 silver badges33 bronze badges

answered Aug 14, 2020 at 16:37

noob's user avatar

In this article, we will be addressing a very common error – filenotfounderror – in Python . If you have worked with Python before, you would have faced this situation too, where you write all your code, maintain proper indents in it, put comments line, double-check for mistypes, and after making sure that everything is right and in its place, you run the code and end up getting ‘filenotfounderror’ in the compiler line.

Frustrating, isn’t it? Don’t worry, we will make sure to cover all possible ways to resolve this problem so that you do not encounter it ever again.

Also read: Handling IOErrors in Python – A Complete Guide

What is filenotfounderror

It is a system message that the compiler throws when you are trying to execute a command that requires a file that the system cannot find. It can be for various reasons like – wrong file path specified, the file is present in another directory, or an extension error. We will address the points in this article. But let’s first recreate the problem in our system.

We will be writing a program to load a .csv file into a pandas data frame and then print that data frame.

import pandas as pd

df=pd.read_csv("nifty 2020 crash")
print(df)

Filenotfounderror_image.png
Filenotfounderror

How to Fix the Python filenotfounderror?

When you run your python code in the terminal, it searches for the file in the root directory from where the terminal is running. A common misconception people have is that when you run a python code to read a file, the terminal searches that file in the whole computer, which is incorrect.

All your files that are needed for your program should be present in the root directory from where the terminal is activated.

This problem can be resolved in two ways:

Method 1: Specifying the complete file path

When we run our program, we state the file name in the program. The compiler searches for it in the root directory and throws errors. The solution to this problem is specifying the whole file path in the code.

import pandas as pd

df = pd.read_csv(r"C:UsersWin 10Desktoppython_errorsolvingnifty 2020 crash.csv")
print(df)
solving_filenotfound_method-1.png

Note: Observe, while specifying the file path, we added an r before writing the path, pd.read_csv(r"C:.......). It is used to convert simple strings to raw strings. If we do not add r before specifying our file path, the system is gonna treat that line of code as a normal string input instead of a file path.

Method 2: Using a .txt file to run Python script

In this method, we use a very simple but effective approach to this problem. We write our code in a .txt file and store it in the directory where the file we require is present. When we run this .txt file with python, the compiler searches for that file only in that directory. This method does not require us to specify the whole file path but we need to make sure that the terminal has been run from the right directory.

To illustrate this example, we have created a directory in our desktop named, ‘python_errorsolving’. This directory contains two files, – the .txt file containing python codes and the .csv file we needed for our code.

method2_notepad_screenshot.png

To run this file from the terminal, go to the directory manually using cd, and then run this file with syntax python error_crt.txt or whatever your file name is.

method2_dos_screenshot.png

As you can see, this method does not require us to specify the whole file path. It is useful when you have to work with multiple files because specifying the whole path for each specific file can be a tedious job.

Method 3: Workaround for filenotfounderror

This is not a solution but rather a workaround for this problem. Suppose you are in a certain situation where the file path is the same but you have to load consecutive different files. In that case, you can store your filename and file path in two different variables and then concatenate them in a third variable. This way you can make combinations of multiple different files, and then load them easily.

To illustrate this solution, we will create a .txt file, with the codes:

import pandas as pd

filename = "nifty 2020 crash.csv"
filepath = "C:\Users\Win 10\Desktop\python_errorsolving\"
file = filepath+filename

df = pd.read_csv(file)
print(df)

alterate_method_dos-screenshot.png

Using an IDE to fix the filenotfounderror

Integrated development environments or IDE’s are a great way to manage our files and environment variables. This helps to create virtual environments for your codes so that the needed libraries and environment variables do not interact with our other projects. In this section, we will create a project in PyCharm IDE, and see how easily we can store and interact with our files.

To demonstrate this example, we have created a .csv file containing school records, and it is named ‘book1.csv’. To import it in PyCharm, follow these steps:

Step 1: Go to File>new project…>give a file name>create.

Step 2: Copy your .csv file and paste it into that project.

method_ide_paste_screen-shot.png

Once you paste the file, you can directly access that file with your codes, without having to specify the whole path. You can simply work with the filename.

import pandas as pd

df = pd.read_csv('Book1.csv', sep='|')
print(df)

Result:

method_ide_paste_screen-shot2.png

Conclusion

In this article, we have observed the different cases where the system cannot locate your files. We also looked at the different solutions that are possible to these problems, from manually specifying paths, to using IDE’s for a better outcome. I hope this article solved your problem

  1. File I/O in Python
  2. Causes of FileNotFoundError in Python

Pyhont File Not Found Error

The FileNotFoundError is a popular error that arises when Python has trouble finding the file you want to open. This article will discuss the FileNotFoundError in Python and its solution.

File I/O in Python

Python has built-in functions which are used to modify files. A file is an object stored in the storage device on the computer.

Python’s open() function is used to open files. It has two parameters.

Parameter Description
filename The file’s name that you want to open.
mode The operation which you want to do on the file.

There are several modes that allow different operations.

Mode Usage
r Open and read a file that already exists.
a Open and append data to a file that already exists.
w Open an existing file to write data onto it. Creates a new file if no file of the same name exists.

Causes of FileNotFoundError in Python

When opening files, an error called FileNotFoundError may arise if Python cannot find the specified file to be opened. The example code below will produce the error that follows it.

Example Code:

#Python 3.x
file = open('text.txt','r')

Output:

#Python 3.x
Traceback (most recent call last):
  File "c:/Users/LEO/Desktop/Python/main.py", line 2, in <module>
    datafile = open('text.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'text.txt'

Reason 1 — File Not Present in the Current Directory

Usually, the primary reason is that the file is not in the same folder from which the code is being run. By default, the open() function looks for the file in the same folder as where the code file is.

Suppose the directory structure looks like this.

code.py
my_folder
---my_file.txt

The error will raise if the user opens the my_file.txt using the following code.

Example Code:

#Python 3.x
file = open('my_file.txt','r')

Output:

#Python 3.x
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-4-0fc1710b0ae9> in <module>()
----> 1 file = open('my_file.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'my_file.txt'

Reason 2 — Incorrect File Name or Extension

The user specifies an incorrect file name or extension if the error is faced even when the file is in the correct directory.

Suppose the user has a file named my_file.txt. If the filename or the extension is incorrect, the error will raise in both situations.

Example Code:

#Python 3.x
file = open('my_file2.txt','r')

Output:

#Python 3.x
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-5-4dd25a062671> in <module>()
----> 1 file = open('my_file2.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'my_file2.txt'

Here’s another example.

Example Code:

#Python 3.x
file = open('my_file.jpg','r')

Output:

#Python 3.x
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-6-d1645df0ff1f> in <module>()
----> 1 file = open('my_file.jpg','r')
FileNotFoundError: [Errno 2] No such file or directory: 'my_file.jpg'

Now let’s discuss the solution to the FileNotFoundError in Python.

Solution 1 — Specify the Complete File Path

The first thing to check is whether the target file is in the correct folder. If it is not in the same folder as the code file, then it should be moved to the same folder as the code file.

If this is not an option, then you should give the complete file’s path in the file name parameter of the open function. File paths work in the following way on Windows:

C:Usersusernamefilename.filetype

The complete path to the file must be given in the open function. An example code with a dummy path is mentioned below.

Example Code:

#Python 3.x
file = open(r"C:Folder1Subfolder1text.txt")

Solution 2 -Specify Correct File Name and Extension

You can re-check the file name and the extension you want to open. Then write its correct name in the open() method.

Suppose you want to open my_file.txt. The code would be like the following.

Example Code:

#Python 3.x
file = open('my_file.txt','r')

Если вы получили сообщение об ошибке «FileNotFoundError: [WinError 2] Система не может найти указанный файл», это означает, что по указанному вами пути нет файла.

В этом руководстве мы узнаем, когда это вызывается программой, и как обрабатывать ошибку FileNotFoundError в Python.

Воссоздание ошибки

Давайте воссоздадим этот скрипт, где интерпретатор Python выдает FileNotFoundError.

В следующей программе мы пытаемся удалить файл, но мы предоставили путь, которого не существует. Python понимает эту ситуацию, как отсутствие файла.

import os

os.remove('C:workspacepythondata.txt')
print('The file is removed.')

В приведенной выше программе мы попытались удалить файл, находящийся по пути C:workspacepythondata.txt.

Консольный вывод:

C:workspacepython>dir data*
 Volume in drive C is OS
 Volume Serial Number is B24

 Directory of C:workspacepython

22-02-2019  21:17                 7 data - Copy.txt
20-02-2019  06:24                90 data.csv
               2 File(s)             97 bytes
               0 Dir(s)  52,524,586,329 bytes free

У нас нет файла, который мы указали в пути. Итак, при запуске программы система не смогла найти файл, что выдаст ошибку FileNotFoundError.

Как решить проблему?

Есть два способа обработки ошибки FileNotFoundError:

  • Используйте try-except и обработайте FileNotFoundError.
  • Убедитесь, что файл присутствует, и выполните соответствующую операцию с файлом.

В следующей программе мы использовали Try Except. Мы будем хранить код в блоке try, который может вызвать ошибку FileNotFoundError.

import os

try:
    os.remove('C:/workspace/python/data.txt')
    print('The file is removed.')
except FileNotFoundError:
    print('The file is not present.')

Или вы можете проверить, является ли указанный путь файлом. Ниже приведен пример программы.

import os

if os.path.isfile('C:/workspace/python/data.txt'):
    print('The file is present.')
else:
    print('The file is not present.')

This div height required for enabling the sticky sidebar

The basic pattern of opening and reading files in Python

Here’s the official Python documentation on reading and writing from files. But before reading that, let’s dive into the bare minimum that I want you to know.

Let’s just go straight to a code example. Pretend you have a file named example.txt in the current directory. If you don’t, just create one, and then fill it with these lines and save it:

hello world
and now
I say
goodbye

Here’s a short snippet of Python code to open that file and print out its contents to screen – note that this Python code has to be run in the same directory that the example.txt file exists in.

myfile = open("example.txt")
txt = myfile.read()
print(txt)
myfile.close()

Did that seem too complicated? Here’s a less verbose version:

myfile = open("example.txt")
print(myfile.read())
myfile.close()

Here’s how to read that file, line-by-line, using a for-loop:

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()

(Note: If you’re getting a FileNotFoundError already – that’s almost to be expected. Keep reading!)

Still seem too complicated? Well, there’s no getting around the fact that at the programmatic layer, opening a file is distinct from reading its contents. Not only that, we also have to manually close the file.

Now let’s take this step-by-step.

How to open a file – an interactive exploration

To open a file, we simply use the open() method and pass in, as the first argument, the filename:

myfile = open("example.txt")

That seems easy enough, so let’s jump into some common errors.

How to mess up when opening a file

Here is likely the most common error you’ll get when trying to open a file.

FileNotFoundError: [Errno 2] No such file or directory: 'SOME_FILENAME'

In fact, I’ve seen students waste dozens of hours trying to get past this error message, because they don’t stop to read it. So, read it: What does FileNotFoundError mean?

Try putting spaces where the capitalization occurs:

  File Not Found Error

You’ll get this error because you tried to open a file that simply doesn’t exist. Sometimes, it’s a simple typo, trying to open() a file named "example.txt" but accidentally misspelling it as "exmple.txt".

But more often, it’s because you know a file exists under a given filename, such as "example.txt" – but how does your Python code know where that file is? Is it the "example.txt" that exists in your Downloads folder? Or the one that might exist in your Documents folder? Or the thousands of other folders on your computer system?

That’s a pretty complicated question. But the first step in not wasting your time is that if you ever see this error, stop whatever else you are doing. Don’t tweak your convoluted for-loop. Don’t try to install a new Python library. Don’t restart your computer, then re-run the script to see if the error magically fixes itself.

The error FileNotFoundError occurs because you either don’t know where a file actually is on your computer. Or, even if you do, you don’t know how to tell your Python program where it is. Don’t try to fix other parts of your code that aren’t related to specifying filenames or paths.

How to fix a FileNotFoundError

Here’s a surefire fix: make sure the file actually exists.

Let’s start from scratch by making an error. In your system shell (i.e. Terminal), change to your Desktop folder:

$ cd ~/Desktop

Now, run ipython:

$ ipython

And now that you’re in the interactive Python interpreter, try to open a filename that you know does not exist on your Desktop, and then enjoy the error message:

>>> myfile = open("whateverdude.txt")
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-1-4234adaa1c35> in <module>()
----> 1 myfile = open("whateverdude.txt")

FileNotFoundError: [Errno 2] No such file or directory: 'whateverdude.txt'

Now manually create the file on your Desktop, using Sublime Text 3 or whatever you want. Add some text to it, then save it.

this
is my
file

Look and see for yourself that this file actually exists in your Desktop folder:

image desktop-whateverdude.png

OK, now switch back to your interactive Python shell (i.e. ipython), the one that you opened after changing into the Desktop folder (i.e. cd ~/Desktop). Re-run that open() command, the one that resulted in the FileNotFoundError:

>>> myfile = open("whateverdude.txt")

Hopefully, you shouldn’t get an error.

But what is that object that the myfile variable points to? Use the type() method to figure it out:

>>> type(myfile)
 _io.TextIOWrapper

And what is that? The details aren’t important, other than to point out that myfile is most definitely not just a string literal, i.e. str.

Use the Tab autocomplete (i.e. type in myfile.) to get a list of existing methods and attributes for the myfile object:

myfile.buffer          myfile.isatty          myfile.readlines
myfile.close           myfile.line_buffering  myfile.seek
myfile.closed          myfile.mode            myfile.seekable
myfile.detach          myfile.name            myfile.tell
myfile.encoding        myfile.newlines        myfile.truncate
myfile.errors          myfile.read            myfile.writable
myfile.fileno          myfile.readable        myfile.write
myfile.flush           myfile.readline        myfile.writelines

Well, we can do a lot more with files than just read() from them. But let’s focus on just reading for now.

How to read from a file – an interactive exploration

Assuming the myfile variable points to some kind of file object, this is how you read from it:

>>> mystuff = myfile.read()

What’s in that mystuff variable? Again, use the type() function:

>>> type(mystuff)
str

It’s just a string. Which means of course that we can print it out:

>>> print(mystuff)
this
is my
file

Or count the number of characters:

>>> len(mystuff)
15

Or print it out in all-caps:

>>> print(mystuff.upper())
THIS
IS MY
FILE

And that’s all there’s to reading from a file that has been opened.

Now onto the mistakes.

How to mess up when reading from a file

Here’s a very, very common error:

>>> filename = "example.txt"
>>> filename.read()

The error output:

AttributeError                            Traceback (most recent call last)
<ipython-input-9-441b57e838ab> in <module>()
----> 1 filename.read()

AttributeError: 'str' object has no attribute 'read'

Take careful note that this is not a FileNotFoundError. It is an AttributeError – which, admittedly, is not very clear – but read the next part:

'str' object has no attribute 'read'

The error message gets to the point: the str object – i.e. a string literal, e.g. something like "hello world" does not have a read attribute.

Revisiting the erroneous code:

>>> filename = "example.txt"
>>> filename.read()

If filename points to «example.txt», then filename is simply a str object.

In other words, a file name is not a file object. Here’s a clearer example of errneous code:

>>> "example.txt".read()

And to beat the point about the head:

>>> "hello world this is just a string".read()

Why is this such a common mistake? Because in 99% of our typical interactions with files, we see a filename on our Desktop graphical interface and we double-click that filename to open it. The graphical interface obfuscates the process – and for good reason. Who cares what’s happening as long as my file opens when I double-click it!

Unfortunately, we have to care when trying to read a file programmatically. Opening a file is a discrete operation from reading it.

  • You open a file by passing its filename – e.g. example.txt – into the open() function. The open() function returns a file object.
  • To actually read the contents of a file, you call that file object’s read() method.

Again, here’s the code, in a slightly more verbose fashion:

>>> myfilename = "example.txt"
>>> myfile = open(myfilename)
>>> mystuff = myfile.read()
>>> # do something to mystuff, like print it, or whatever
>>> myfile.close()

The file object also has a close() method, which formally cleans up after the opened file and allows other programs to safely access it. Again, that’s a low-level detail that you never think of in day-to-day computing. In fact, it’s something you probably will forget in the programming context, as not closing the file won’t automatically break anything (not until we start doing much more complicated types of file operations, at least…). Typically, as soon as a script finishes, any unclosed files will automatically be closed.

However, I like closing the file explicitly – not just to be on the safe side – but it helps to reinforce the concept of that file object.

How to read from a file – line-by-line

One of the advantages of getting down into the lower-level details of opening and reading from files is that we now have the ability to read files line-by-line, rather than one giant chunk. Again, to read files as one giant chunk of content, use the read() method:

>>> myfile = open("example.txt")
>>> mystuff = myfile.read()

It doesn’t seem like such a big deal now, but that’s because example.txt probably contains just a few lines. But when we deal with files that are massive – like all 3.3 million records of everyone who has donated more than $200 to a single U.S. presidential campaign committee in 2012 or everyone who has ever visited the White House – opening and reading the file all at once is noticeably slower. And it may even crash your computer.

If you’ve wondered why spreadsheet software, such as Excel, has a limit of rows (roughly 1,000,000), it’s because most users do want to operate on a data file, all at once. However, many interesting data files are just too big for that. We’ll run into those scenarios later in the quarter.

For now, here’s what reading line-by-line typically looks like:

myfile = open("example.txt")
for line in myfile:
    print(line)
myfile.close()

Because each line in a textfile has a newline character (which is represented as n but is typically «invisible»), invoking the print() function will create double-spaced output, because print() adds a newline to what it outputs (i.e. think back to your original print("hello world") program).

To get rid of that effect, call the strip() method, which belongs to str objects and removes whitespace characters from the left and right side of a text string:

myfile = open("example.txt")
for line in myfile:
    print(line.strip())
myfile.close()

And of course, you can make things loud with the good ol’ upper() function:

myfile = open("example.txt")
for line in myfile:
    print(line.strip())
myfile.close()

That’s it for now. We haven’t covered how to write to a file (which is a far more dangerous operation) – I save that for a separate lesson. But it’s enough to know that when dealing with files as a programmer, we have to be much more explicit and specific in the steps.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • File not found error errno 2 no such file or directory
  • File not found easyanticheat launcher settings json как исправить
  • File minint system32 biosinfo inf could not be loaded the error code is 18
  • File load error перевод
  • File io failure openfilefailed error code 0 alan wake

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии