1.文件的打开与关闭

1
2
3
4
5
6
7
8
9
fp = open('a.txt')     # 默认是以'r'模式打开,如果其它模式需要指定
fp = open('a.txt', 'w')# 以写的模式打开
# w: 写模式,如果文件已经存在,则会清空
# a:追加模式,如果文件已经存在,那么会在末尾添加数据
# w+:读写模式
fp.close()
使用with(一种上下文管理协议)可以避免忘记close()操作,例如
with open('a.txt', 'w') as data:
print("it's...", file=data)

2.从文件读取数据

1
2
3
fp.readline()    # 从文件获取一行数据
for each_line in fp: # 可迭代获取每一行数据
print(each_line)

3.文件指针

1
fp.seek(0)   # 回到文件的起始位置

4.检查文件是否存在

1
os.path.exists('filename')   # 返回布尔值

5.写入数据到文件

1
2
# 直接用print
print('string', file=fp)

6.读取 XML 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import xml.dom.minidom
#打开 XML 文档
xmlDoc = xml.dom.minidom.parse('test.xml')
root = xmlDoc.documentElement
# 获取“base”节点列表
baselist = root.getElementsByTagName('base')
# 用 while 循环所有 base 节点
i=0
while i<len (baselist)-1:
i=i+1
base=baselist[i]
baselang=base.getAttribute('loc')# 获取 base 节点中 loc 属性的值
print (baselang)
print (base.nodeName)
print (base.firstChild.data)# 获取节点的值

每一个结点都有它的 nodeName,nodeValue,nodeType 属性:nodeName 是结点名字;nodeValue 是结点的值,只对文本结点有效;nodeType 是结点的类型。
getElementsByTagName 方法获取指定名称的标签,getAttribute 方法可以获得元素的属性所对应的值,firstChild 属性返回被选节点的第一个子节点,.data 表示获取该节点人数据。
注意:

  • 使用的是 Python 3.x;
  • 如果循环控制语句条件设置不当,会造成内存溢出,报错:“list index out of range”;
  • 文件名不要使用 xml.py,要不 import 会导入文件本身而出错:“No module named ‘xml.dom’; ‘xml’ is not a package”;

7.读取 CSV 文件

7.1..从 csv 中读取文件, 基本和传统文件读取类似

1
2
3
4
5
import csv
with open('data.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row

7.2.向 csv 文件写入数据

1
2
3
4
5
6
7
8
import csv
with open( 'data.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(['name', 'address', 'age']) # 单行写入
data = [
( 'xiaoming ','china','10'),
( 'Lily', 'USA', '12')]
writer.writerows(data) # 多行写入