diff --git a/python.html.markdown b/python.html.markdown
index 463556d9..fc6c4d7d 100644
--- a/python.html.markdown
+++ b/python.html.markdown
@@ -373,7 +373,58 @@ filter(lambda x: x > 5, [3, 4, 5, 6, 7]) #=> [6, 7]
[x for x in [3, 4, 5, 6, 7] if x > 5] #=> [6, 7]
####################################################
-## 5. Classes
+## 5. File Operations
+####################################################
+
+# We use open to open a file
+f = open('text.txt') # open returns a read-only file object
+
+# Use another parameter to indicate the mode
+f = open('text.txt', 'w') # f is write-only
+f = open('text.txt', 'r') # f is read-only
+# 'r+' for both readable and writable
+# 'rb' and 'wb' for binary mode
+
+# read
+f.read() # => "line1\nline2\nline3\n"
+f.read() # => "" # The position of f is at the end of file.
+
+f.seek(0) # Move the position of f to the beginning.
+f.readline() # => "line1\n"
+f.readline() # => "line2\n"
+f.readline() # => "line3\n"
+
+f.seek(0)
+f.readlines() # => ['line1\n', 'line2\n', 'line3\n']
+
+# Use file object as an iterator
+f.seek(0)
+for line in f:
+ print line # print each lines in f
+
+# Use close to close a file after all operations are completed.
+f.close()
+
+# write
+f = open('text.txt', 'w')
+
+f.write('line4\n')
+f.writelines(['line5\n', 'line6\n', 'line7\n'])
+# Line seperators will not be added by writelines automatically.
+
+f.close()
+
+# 'with' statement
+with open("text.txt") as f:
+ doSomething(f)
+# equivalent to
+f = open('text.txt')
+doSomething(f)
+f.close()
+
+
+####################################################
+## 6. Classes
####################################################
# We subclass from object to get a class.