I have this code below to store some text in a file ~/.boto that is in home directory.
But Im getting this error:
IOError: [Errno 2] No such file or
You need to use os.path.expanduser and open for writing with w:
import os
# with will automatically close your file
with open(os.path.expanduser("~/.boto"),"w") as f:
f.write("test") # write to file
os.path.expanduser(path)
On Unix and Windows, return the argument with an initial component of ~ or ~user replaced by that user‘s home directory.
On Unix, an initial ~ is replaced by the environment variable HOME if it is set; otherwise the current user’s home directory is looked up in the password directory through the built-in module pwd. An initial ~user is looked up directly in the password directory.
On Windows, HOME and USERPROFILE will be used if set, otherwise a combination of HOMEPATH and HOMEDRIVE will be used. An initial ~user is handled by stripping the last directory component from the created user path derived above.
If the expansion fails or if the path does not begin with a tilde, the path is returned unchanged.
In [17]: open("~/foo.py")
---------------------------------------------------------------------------
IOError Traceback (most recent call last)
in ()
----> 1 open("~/foo.py")
IOError: [Errno 2] No such file or directory: '~/foo.py'
In [18]: open(os.path.expanduser("~/foo.py"))
Out[18]:
By default a file is only open for reading, if you want to open for writing you need to use w, f you want to open for reading and writing use r+ or to append use a.
If you have content in the file then w is going to overwrite, if you are trying to add to the file then use a