
Though there are a lot of resources out there for Python, rarely do you find a simple reference guide that helps you navigate the basics. I found that there was not a lot of reference material to help you do the simple things, if you didn’t know what to look for.
This little guide will focus on the basics of reading and writing files in python..
First we are going to focus on reading from files. Open up your Python shell,
or IDE.
To open a file/file object :
open(filename,mode)
- filename can be a file or path to a file
- mode can be any of the following
- ‘r’ for reading
- ‘r+’ for reading and writing
- ‘w’ for writing
- ‘a’ for appending
- both read and write modes also have a ‘b’ option for binary reading and writing (‘rb’, or ‘wb’)
Ex:
myInput = open('myfile.txt','r')
This command will open the file “myfile.txt” in the current
directory, in “read” mode. You can access the methods of this file
using the ‘myInput’ variable. In the example, the open command will
open the file indicated in the first argument(‘myfile.txt’).
This argument can be a file, or the path to a file. The second
argument, is the file mode.
Once you have a file handle(myInput), you can work with that
file, depending on the mode you opened it with. We can now start
reading data from our file.
Ex:
s = myFile.read() Will read entire file into a string
s = myFile.read(N) Will read N bytes (1 or more) from file
s = myFile.readline() Will read next line into string until end of line
L = myFile.readlines() Will read entire file into a list of strings
November 28th, 2008 at 12:04 pm
Hi, I have opened my file I have manipulated and I want save this new change in the other directory. At least I know that I should be use ' r ' for reading and ' w ' command for writing, but I do not know how I can make connection between readings and manipulate file and writing this manipulation in the other file.
Best Regards
Reza _ Finland
November 28th, 2008 at 12:55 pm
All you need to do is specify the location of the file you want to save to.
So when opening the second file, specify the directory then.
Example on win32:
file = open(“my_dir\newfile.txt”,”w”)
Example on *nix :
file = open(“my_dir/newfile.txt”,”w”)
This will create the new file in the directory “my_dir” assuming the directory exists in the same folder as your python script. You can also specify an absolute file path as well.
December 17th, 2008 at 12:53 pm
Thank you Daniel, another problem:
x = [0,1,2,3]
GeneCode = ['AAAA','AAAC','AAAG','AAAT']
def Li_to_GC(x):
for i in x:
print GeneCode[i],
Li_to_GC(x)
How can convert the result to the list or string?
December 18th, 2008 at 12:02 pm
Well,
I would argue that the input is a list already. If you are wanting to return a subset of the GeneCode list, I would do the following. There are more graceful ways to achieve this, but this method shows you the logic involved.
x = [0,1,2,3]
GeneCode = ['AAAA','AAAC','AAAG','AAAT']
def Li_to_GC(x):
newList = [GeneCode[i] for i in x]
return newList
print Li_to_GC(x)
In this case, you can then pass any numeric list to LI_to_GC and get the corresponding Genecodes list back.
I would check out this great List comprehension article here, and you can learn more. http://effbot.org/zone/python-list.htm
December 19th, 2008 at 8:15 am
hi, how would you read the whole file in but exclude say the first 4 bytes of it?
thanks
sean
February 12th, 2009 at 9:24 am
Hi,
I am opening a file in r+ mode. I have a problem in this. If I first write in a file and then read the same file it is working fine. But some junk characters are added to the end of the string.
Also one more problem if I read it first say using readline function and then write it, the write operation doesn't happen. Any idea what might be the problem?
April 1st, 2009 at 8:07 am
I agree with your first statements, there is quite a bit of python help out there, but hard to get to the simple stuff. Am tryng to open a txt file, pull certain parts out, and then write to a new csv….get bits of it, but not the whole process, any help would be great, thanks