Chapter 7 Files
File PRocessing
www.py4inf.com/code/mbox-short.txt
open() returns a "file handle" - a variable used to perform Operations on the file
handle is a connection. doesn't actually have data
kind of like "File -> Open" in a Word Processor
handle = open(filename, mode) #filename is a stringfhand = open('mbox.txt','r') #'r':reading,'w':writingThe newline Characterstuff = 'Hello/nWorld' #/n means new line, and it is counted as a characterprint stuffprint len(stuff)output:HelloWorld11Counting Lines in a Filexfile = open('/Users/huyifan/documents/mbox.txt')count = 0for line in xfile: count = count + 1print 'Line Count:',countimportant! A file handle ope for read can be treated as a sequence of strings where each line in the file is a string in the sequenceReading the *Whole* FileUse read() to read the whole file (newlines and all) into a single string.xfile = open('/Users/huyifan/documents/mbox.txt')inp = xfile.read()print len(inp)print inp[:20]output:94625From stephen.marquarSearching Through a Filefor line in xfile: if line.startswith('Author'): print lineoutput:Author: stephen.marquard@uct.ac.za #why there are black lines? because of /n !Author: louis@media.berkeley.eduAuthor: zqian@umich.eduAuthor: rjlowe@iupui.eduAuthor: zqian@umich.eduAuthor: rjlowe@iupui.eduWe can use the rstrip() or lstrip().for line in xfile: if line.startswith('A'): print line.rstrip()output:Author: david.horwitz@uct.ac.zaAuthor: stephen.marquard@uct.ac.zaAuthor: louis@media.berkeley.eduAuthor: louis@media.berkeley.eduAuthor: ray@media.berkeley.eduAuthor: cwen@iupui.eduAuthor: cwen@iupui.eduAuthor: cwen@iupui.eduSkipping with continuefor line in xfile: if not line.startswith('Author'): #or: if not '@media.berkeley.edu' in line: continue #process our 'interesting lines' print line.rstrip()The output will be the same.Bad File Namesfname = raw_input('Enter the file name:')try: fhand = open(fname)except: print 'File cannot be openned:', fname exit()count = 0for line in fhand: if line.startswith('Author:'): count = count + 1print 'There were', count, 'pieces of important information'Chapter 8 Lists
8.1 basic understanding and operationsA list is a kind of collection.A collection allows us to put many values in a single "variable"like:friends = ['Joe','Joey','Joseph']A list element can be any Python object - even another listprint [[1,2],3,4]A list can be emptyprint []Strings are "immutable" - we cannot change change the contents of a string - we must make a new string to make any changeLists are "mutable" - we can change an element of a list using the index operatorlen()print len([[1,2],3,4])Using the range function: generate a listprint range(4) # often be used as: for i in range(len(friends)) friend[i]output:[0, 1, 2, 3]Concatenating list using +print range(4)+[2,3]output:[0, 1, 2, 3, 2, 3]Slice lists: like 'strings'8.2 Build-in FunctionsBuilding a list from scratch: xxx.append()stuff = list()stuff.append('book')stuff.append(99)print stuffoutput:
['book', 99]xxx in xxxx?Order the list
friends = ['Joey','Joe','Joseph','Mike','Ellen']friends.sort()print friendsoutput:['Ellen', 'Joe', 'Joey', 'Joseph', 'Mike'] #important: it has changed itself!The sort method (unlike in strings) means "sort yourself"other useful build-in functions
len(numbers), max(numbers), min(numbers), sum(numbers)Strings -> Lists: Use split()/split(';')/... to break a string into parts and produces a list of strings. (leave out all the comma/space..)abc = 'With three words'stuff = abc.split()print stuffprint len(stuff)output:['With', 'three', 'words']3abc = 'With;three;words'stuff1 = abc.split()stuff2 = abc.split(';') #important!print stuff1print stuff2print len(stuff1)print len(stuff2)output:['With;three;words']['With', 'three', 'words']13
新闻热点
疑难解答