Reputation: 83677
This is the error I am getting:
Traceback (most recent call last):
File "E:\stuff\module.py", line 91, in <module>
f = open('E:/stuff/log.txt')
IOError: [Errno 2] No such file or directory: 'E:/stuff/log.txt'
And this is my code:
f = open('E:/stuff/log.txt')
The E:/stuff/log.txt
file exists. I can navigate in Windows Explorer and open it so why can't I open it?
EDIT:
Output of DIR command:
C:\Documents and Settings\Administrator>dir e:\stuff
Volume in drive E has no label.
Volume Serial Number is 5660-4957
Directory of e:\stuff
23. 10. 2010 09:26 <DIR> .
23. 10. 2010 09:26 <DIR> ..
19. 10. 2010 20:07 385 index.py
23. 10. 2010 16:12 1 954 module.py
22. 10. 2010 19:16 8 335 backprop.py
19. 10. 2010 20:54 1 307 backprop-input.gif
19. 10. 2010 01:48 310 HelloWorld.kpf
23. 10. 2010 15:47 0 log.txt.txt
6 File(s) 12 291 bytes
2 Dir(s) 8 795 586 560 bytes free
C:\Documents and Settings\Administrator>dir e:\
Volume in drive E has no label.
Volume Serial Number is 5660-4957
Directory of e:\
16. 10. 2010 13:32 <DIR> development-tools
23. 10. 2010 09:26 <DIR> stuff
0 File(s) 0 bytes
2 Dir(s) 8 795 586 560 bytes free
I am running the python script from the cmd like this:
python E:\stuff\module.py
Upvotes: 7
Views: 37435
Reputation: 11
just use raw string with absolute path
file_path = r"E:\stuff\log.txt"
this should work fine
Upvotes: 1
Reputation: 1
Following Worked for me. Instead of using Environment.getExternalStorageDirectory()
use context.getFilesDir()
.
Following peice of code worked for me.
public void create_file(Context context, String sFileName, String sBody) {
try {
File root = new File(context.getFilesDir(), "NEC_TEXT");
if (!root.exists()) {
root.mkdir();
}
File filepath = new File(root, sFileName);
FileWriter writer = new FileWriter(filepath);
writer.append(sBody);
writer.flush();
writer.close();
Toast.makeText(context, "Saved", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
Toast.makeText(context, "Error"+e.toString(), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
}
Upvotes: 0
Reputation: 2247
Look at this line in the "dir" output:
23. 10. 2010 15:47 0 log.txt.txt
The file you are looking for is named "log.txt.txt", not "log.txt". I see this happen when people set up the Windows file manager to not show known file extensions and then they try to add or modify an extension. I recommend to others that they turn this behavior off. You can do this under View->Folder Options I believe.
Upvotes: 4
Reputation: 342263
Define you path names using os.path.join()
root="E:\\"
mylog = os.path.join(root,"stuff","log.txt") # or log.txt.txt as seen in your dir output
f = open(mylog)
...
f.close()
Upvotes: 1
Reputation: 10867
Firstly, from above, Windows supports / just fine.
Secondly: Well, if you look at your file, you'll notice it's not log.txt, it's log.txt.txt... You may see it as "log.txt" in your graphical folder viewer (as opposed to the CLI "dir" command) simply because it hides the known file extensions.
I recommend you disable this - see folder options, there should be an option "Hide extensions of known file types" (or similar).
Upvotes: 13
Reputation: 70021
it been a long time that i didn't use windows, but if i remember well windows use back-slash in system path so you should do:
import os
file_name = os.path.join("e:\\stuff", "log.txt")
f = open(file_name)
and not:
f = open('E:/stuff/log.txt')
there is not / in paths in windows.
Upvotes: 1
Reputation: 1220
Since it is windows, and the backslash is a escape character, you must double the backslash to escape it. Try
e:\\stuff\\log.txt
Upvotes: 1
Reputation: 10840
how about reading permissions? maybe not authorized to read (default mode of open)
Upvotes: 1