Python problem with instruction open()

  • Context: Python 
  • Thread starter Thread starter mynick
  • Start date Start date
  • Tags Tags
    Instruction Python
Click For Summary

Discussion Overview

The discussion revolves around a Python programming issue related to file handling, specifically an IOError encountered when attempting to open a text file named 'words.txt'. Participants explore potential reasons for the error and suggest various approaches to resolve it, including file path considerations and directory management.

Discussion Character

  • Technical explanation
  • Debate/contested

Main Points Raised

  • One participant reports an IOError indicating that 'words.txt' cannot be found, despite placing the file in multiple directories associated with Python.
  • Another participant suggests using an absolute path to the file, indicating that Pyscripter may not be using the expected directory.
  • A different participant recommends using the command 'os.getcwd()' to determine the current working directory and suggests checking for file existence with 'os.path.exists()' before attempting to open the file.
  • One participant clarifies that the paths listed in the settings are for Python libraries and not for application text files, emphasizing the need for a full or relative path to 'words.txt'.
  • Another participant notes that the relative path is determined by the directory from which the script is run, and mentions that changing the working directory with 'os.chdir()' can affect relative paths.
  • A participant humorously questions the relevance of the thread with a single word: "necro?"

Areas of Agreement / Disagreement

Participants generally agree on the importance of using the correct file path and understanding the working directory context, but there are multiple suggestions on how to approach the problem, indicating that the discussion remains unresolved.

Contextual Notes

Limitations include the lack of clarity on the exact working directory when the script is executed and the potential for confusion regarding relative versus absolute paths.

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.
 

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
10K