Python Python problem with instruction open()

Click For Summary
The discussion centers around resolving an IOError encountered when attempting to open a file named 'words.txt' in a Python script using Pyscripter. The user has placed the file in several directories associated with Python but still receives the error indicating the file cannot be found. Key solutions suggested include using an absolute path to the file, as the current working directory may not be what the user expects. Commands like 'os.getcwd()' can be used to check the current directory, while 'os.path.exists()' can verify the file's existence before attempting to open it. Additionally, it is noted that the script's working directory can change with 'os.chdir()', affecting how relative paths are interpreted. For improved efficiency, using regular expressions to filter words could also be considered. Overall, ensuring the correct file path and understanding the script's execution context are crucial for resolving the issue.
mynick
Messages
33
Reaction score
0
I am fiddling with python v2.7.5,i am using Pyscripter version 2.5.3.0 x86 to write my program and i do not know how to deal with this problem when i run my program:

PROBLEM:

___________________________________________
IOError:[Errno 2] No such file or directory:'words.txt' |
___________________________________________|

My Settings in Pyscripter:
In my Pyscripter menu bar: tools->python path...->here opens a pop up window which says: Ordered list of file paths:
C:\Python27
C:\Python27\lib\site-packages
C:\Python27\lib
(some more...)

I have placed my 'words.txt' in all three file paths i mention above.For example,C:\Python27 it does contain my 'words.txt' among other things.

THE CODE:

N=13
def findme(N):
...i=1
...fin=open('words.txt')
...for i in range(N):
...readaline=fin.readline()
...line=readaline.strip()
...for letter in line:
....if letter!='a':
.....return line

findme(13)

what i want the code to do: open and search my txt file :'words.txt' one line at a time and print on the screen all the words that do not have the letter 'a' in them. The contents of my words.txt are in this fashion:
aaaaaaa
bbbbbbb
assdd
erwe
sddfsdfsfgsgsg

How do i solve the IOError:[Errno 2] No such file or directory:'words.txt' ?

(sorry for the dots in my code,in my pyscripter of course i do not use dots,i used them here to create indents and make it easier to read the code)
 
Last edited:
Technology news on Phys.org
It appears it can't find your file. Try using an absolute path to your file like:

C:\mydirectory\mysubdiretory\words.txt (example of a windows path)

or /home/myhome/words.txt

Its probably the case that pyscripter is not using the directory you think its using.

Can you issue commands from within your script like try 'dir' or 'ls -al' command to see what files are listed?

os.system("dir") if windows or os.system("ls -al") if macosx or linux

Alternatively try running a pwd command to see what is the current directory.

Also I would try changing the N used in the findme() to be some other name like 'n'
 
os.getcwd() would be what you want to use to find the pwd.

There are also functions to check for the existence of a file/directory that you can use before you call open(), e.g. os.path.exists().

You might also want to look at regular expressions rather than iterating through each character line by line. In a Unix like system you could do the same thing with `grep -v a words.txt'.
 
The paths that you listed are where Python searches for Python code / libraries / etc. Those directories are for official Python code, not for application text files. Finding a text file to open and read is different. The open statement needs a full or relative path directly to words.txt. Python will not do any searching for words.txt. It either finds it where you said it is or it doesn't open it. The relative path is relative to where you are running the Python script. The simplest relative path is in the directory where you are running the program. Put words.txt there and your script should be able to open it.
 
necro?
 
FactChecker said:
The relative path is relative to where you are running the Python script.
Clarification:That is unless the script moves by calling os.chdir(new_working_directory). After that call, the relative paths start at new_working_directory. So you can start a script in one directory and the script can change to more convenient directories to read or write text files. You don't have to move your scripts and text files into the same directory.
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

Replies
6
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 11 ·
Replies
11
Views
3K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 9 ·
Replies
9
Views
3K
  • · Replies 16 ·
Replies
16
Views
4K
  • · Replies 17 ·
Replies
17
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 9 ·
Replies
9
Views
9K