Python problem with instruction open()

  • Context: Python 
  • Thread starter Thread starter mynick
  • Start date Start date
  • Tags Tags
    Instruction Python
Join the discussion
Ask a follow-up here, or get your own question answered by working scientists, mathematicians and engineers — people, not an autocomplete.
Real named experts · corrections over time · the nuance an AI answer skips
5 replies · 6K views
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:
Physics 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.
 
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.