读取文本文件
infile=open(filename,’r’)
创建一个程序和文件的连接,其能够让程序从文件中读取数据。文件称作为了读取而打开,或为了输入而打开。open函数返回一个文件对象。
变量infile被用于从文件中读取行以及最终中断和文件的连接。在文件为读取而被打开后,一个具有如下头部的for循环
for line in infile
用来连续访问文件中的语句。
listVar=[line.rstrip() for line in infile]
生成一个字符串列表,其中列表的每一项是文件中一行减去一个换行符。
注意:只使用for循环,换行符会出现在每一行的结尾(可能除了最后一行外)
任何时候,从程序到文件的连接都可以使用如下语句终止。
infile.close()
当打开文件的函数结束时,文件通常会被自动关闭。然而,当我们不再使用一个文件时,我们要明确的关闭它。
def main():
file='ww.txt'
displayWithForLoop(file)
print()
displayWithListComprehension(file)
def displayWithForLoop(file):
infile=open(file,'r')
for line in infile:
print (line,end='')
infile.close()
def displayWithListComprehension(file):
infile=open(file,'r')
listVar=[line.rstrip() for line in infile]
infile.close()
print(listVar)
main()
一个为了读取而被打开的文件也能使用read和readline方法访问。
def main():
file='ww.txt'
displayWithForLoop(file)
print()
displayWithListComprehension(file)
def displayWithForLoop(file):
infile=open(file,'r')
line=infile.readline()
while line!='':
print(line,end='')
line=infile.readline()
infile.close()
def displayWithListComprehension(file):
infile=open(file,'r')
listVar=[line.rstrip() for line in infile]
infile.close()
print(listVar)
main()
创建文本文件
outfile=open(filename.’w’)
使用指定的名字创建一个新的文本文件。这个文件被指定成为了写入而打开。
变量outline用来向文件中写入行,并且用来在最后关闭文件。如果list1代表一个字符串的列表,其中每一个字符串都以换行符结尾。下面这个语句:
outfile.writelines(list1)
将列表中的每一个元素作为一行写入文件中。如果strVar的值是一个字符串,那么语句
outfile.write(strVar)会将strVar的值追加到文件中。
由于内存的访问速度远远快于磁盘的访问速度,Python分配了一块叫做缓冲区的内存空间,用来临时保存将要写进磁盘的数据。一旦缓冲区满了,或者文件被关闭了,缓冲区里的内容就会被写入磁盘。所以,执行write和writelines语句之后,必须关闭文件,以确保所有数据在物理层面上传输到了磁盘中。
向已有的文本文件中添加行
outfile=open(fileName,’a’)
允许一个程序向指定的文件末尾追添行。随后writelines和write方法可以用来添加新的行。这个文件称为为了添加而打开。(opened for append)
def main():
outfile=open('ww.txt','a')
list1=['dan\n','enheng\n']
outfile.writelines(list1)
outfile.write('@@**%%##')
outfile.close()
main()
修改文本文件中的元素
为了获取执行任务所需的权限,首先使用下面这个语句来导入标准库模块os:
import os
习惯上,我们将这个语句放在程序的最开头,在main函数之前。
在此之后,语句os.remove(fileName)会删除指定文件。
语句os.rename(oldFileName,newFileName)会修改文件的名字,甚至可能是文件的路径。
注意:remove和rename函数不可以使用在已经打开的文件上;如果这么做会产生错误信息。并且rename函数的第二个参数也不可以是一个已经存在的文件的名字。
如果删除、重命名或者为了读入而打开一个不存在的文件,name会产生一条错误信息。
函数os.path.isfile(fileName) 在指定文件存在时会返回True,否则返回False。它可以用来在试图重命名、删除或者读入一个文件之前,确认其是否存在。
集合
列表是元素的顺序存储容器,并且允许元素重复。
集合是元素的无序存储容器,不允许重复的元素。列表使用方括号来包围元素,而集合使用花括号来包围元素集合可以容纳数值、字符串、元组和布尔变量。然而集合不可以容纳列表或者其他集合。
w={‘s’,’ni’}
尽管一个集合中的元素不能被排序,但是可以使用如下形式的语句,将元素按照自定义的顺序放入到一个列表中:
sorted(set1,key=f,reverse=BooleanValue)
集合推导
如列表一样,集合可以使用推导来创建。
{x*x for x in range(-3,3)}创建了集合{0,1,4,9}
集合论方法
Python拥有从两个已存在的集合创建新集合的方法。
合并两个集合
set1.union(set2)是包含了出现在set1或者出现在set2的元素,并且元素不重复的的集合。
一个新的集合,其包含了同时出现在两个集合中的元素
set1.intersection(set2)是包含了同时出现在set1和set2的元素的集合。
删除一个集合出现在另一个集合中的元素
set1.difference(set2)是从set1中排除了出现在set2的元素的集合。
在文件中使用集合论的方法
按照下面的三个步骤,从两个相关的文本文件中提取信息:
1、创建两个集合,分别包含了两个文件中的内容。
2、使用集合操作,例如union,intersection或者difference,应用到这两个集合上
3、将得到的集合的结果写入到一个新的文本文件中。
待处理的数据通常来自包含大型表格的文件
CSV文件
CSV(Comma-Separated file)
CSV格式文件的文本文件,每一行都包含了若干条数据项,每一项数据之间使用逗号隔开。
文件中的每一行称为一条记录
访问CSV文件中的数据
我们可以将一个CSV文件中的数据存入到一个列表中,然后分析它。这个列表中的每一项也是一个列表,包含了文件一行的内容。
分析数值数据
Excel和CSV文件
CSV文件和Excel表格可以互换。
如果创建或者下载了一个Excel表格,也可以将其转换为一个CSV文件。单击菜单中“另存为”,在保存类型下拉菜单中选择“CSV(逗号分隔)(*.csv)”