Beruflich Dokumente
Kultur Dokumente
# set up a test string str1 = """There is no ham in hamburger. Neither apple nor pine are in pineapple. Boxing rings are square. Writers write, but fingers don't fing. If a vegetarian eats vegetables, what does a humanitarian eat?
5.
6. 7. 8. 9.
10. Overlook and oversee are opposites. 11. Slim chance and fat chance are the same. 12. A house can burn up as it burns down. 13. """ 14. 15. # more to test file appending
16.
18. """ 19.
20. # let's create our test file by writing the test string to the working folder/directory with write() 21. # modifier "w" is for writing text, use "wb" for binary data like images
26. # read back the entire test string as a string with read() 27. # "r" is for reading text, use "rb" for binary data like images
fin = open("English101.txt", "r") str3 = fin.read() fin.close() print "Contents of file English101.txt:" print str3
34. # a similar read using try/except error handling 35. # tested this out by deliberately changing the filename
filename = "English102.txt" try: fin = open(filename, "r") str3 = fin.read() fin.close() print "Contents of file %s:" % filename print str3
43. 44.
45.
46. print 47. 48. # append more text to an existing file with modifier "a"
53. # read the appended text file as a list of lines with readlines()
fin = open("English101.txt", "r") lineList = fin.readlines() fin.close() print "Contents of appended file (first option):" for line in lineList: print line,
61. print 62. 63. # a short-form to do this, uses readlines() internally 64. # the comma at the end of print takes care of the extra newline character 65. # note: Python does clean up and closes the file for you
print "Contents of appended file (second option):" for line in open("English101.txt", "r"): print line,
70. print 71. 72. # similar to above, but creating a list with list comprehension
line_list = [line for line in open("English101.txt", "r")] print "A list of the text lines:" print line_list # test
77. print 78. 79. # read just one line of text at a time
print "The first two lines:" fin = open("English101.txt", "r") print "Line 1 =", fin.readline(), print "Line 2 =", fin.readline() # etc. fin.close()
fin = open("English101.txt", "r") lineList = fin.readlines() fin.close() print "Last line =", lineList[-1], print "Total lines =", len(lineList)
94. 95.
96.
98.
99. # seek index is zero based, so the 10th character would be position 9
100. fin.seek(9) 101. print "From character 10 to end of line =", fin.readline() 102. print "End if this line is at character =", fin.tell()
103. print
104. num = 16 105. pos = 80 106. print "Read %d characters starting at position %d:" % (num, pos) 107. fin.seek(pos) 108. print fin.read(num) 109. fin.close()
110. 111. print 112. 113. # read a particular line, lineNumber is zero based
114. import linecache 115. lineNumber = 5 116. partLine = linecache.getline("English101.txt", lineNumber) 117. print "Line %d = %s" % (lineNumber, partLine)
118. 119. print 120. 121. # processing the lines as you read them in and forming a list 122. # using list comprehension
127. print "Each period has been replaced with an exclamation mark:" 128. for line in list2: 129. print line,
130.
134. fout = open( "test1.txt", "w" ) 135. print >>fout, "I love Monte Python!" 136. fout.close()
137. 138. # a file exists if you can open and close it
139. def exists(filename): 140. try: f = open(filename) 141. f.close() 142. return True 143. 144. except: return False 145.
146. 147. # what does file object fin look like?
148. filename = 'test1.txt' 149. if exists(filename): 150. fin = open(filename) 151. print "file object =", fin 152. print "file content =", fin.read() 153. fin.close() 154. else: 155. print "File %s does not exist!" % filename
156. 157. print 158. 159. # for large text files you can write and read a zipped file (PKZIP format) 160. # notice that the syntax is mildly different from normal file read/write
161. import zipfile 162. zfilename = "English101.zip" 163. zout = zipfile.ZipFile(zfilename, "w") 164. zout.writestr(zfilename, str1 + str2) 165. zout.close()
166. # read the zipped file back in
169. zin.close() 170. print "Testing the contents of %s:" % zfilename 171. print strz
172. 173. print 174. 175. # read a binary image file, pick something you have ... 176. # (also shows exception handling)
177. filename = "Moo.jpg" 178. try: 179. fin = open(filename, "rb") 180. data = fin.read() 181. fin.close() 182. print "This is a hex-dumb of %s:" % filename 183. for c in data: print "%02X" % ord(c), 184. 185. print 186. except IOError: 187. print "Binary File %s not found" % filename 188. #raise SystemExit # optional exit
189. 190. print 191. 192. # below is a typical Python dictionary object of roman numerals
197. import pickle 198. print "The original dictionary:" 199. print romanD1 200. file = open("roman1.dat", "w") 201. pickle.dump(romanD1, file) 202. file.close()
203. # now load the dictionay object back from the file ...
204. file = open("roman1.dat", "r") 205. romanD2 = pickle.load(file) 206. file.close() 207. print "Dictionary after pickle.dump() and pickle.load():" 208. print romanD2
209. 210. print
211. 212. # module StringIO allows you to treat a data stream like a file 213. # if you do a lot of processing, memory streams are much faster then file streams 214. # (StringIO.StringIO is a class that can be inherited in a class of your own)
215. print "You can stream text/data to memory ..." 216. import StringIO 217. stream1 = StringIO.StringIO(str2) # use the string str2 here, or read one in from a file 218. print str2
219. 220. # show the memory where the object is located
225. print "... and use stream like a file:" 226. print stream1.readline()
227. 228. # reset the stream to zero (beginning) and read all lines
229. stream1.seek(0) 230. list1 = stream1.readlines() 231. print "All lines from beginning:" 232. for item in list1: 233. print item,
234. print 235. # reset the stream to position 9 and read the next 20 characters
236. stream1.seek(9) 237. print "Read 20 characters starting at position 9:" 238. print stream1.read(20)
239. 240. # finally close the stream
241. stream1.close()