热线电话:13121318867

登录
2018-10-25 阅读量: 1241
Python文件类型

1、常用的文件编码类型

2、Python读取文件

Python读取文件包括两步:文件打开+文件读取

文件打开代码示例:infile = open(“numbers.dat”,”r”)

文件打开模式如下:

文件读取代码示例:data = infile.read()

文件读取方法如下:

Python读取文件示例

# test01.txt 文件内容如下
1 2 3
4 5 6
7 8 9

# 读取文件全部内容
fname = "D:\\test01.txt" #确保D盘下有test.txt文件
infile = open(fname,"r")
data = infile.read()
# 上述两条代码也可合并成:data = open(fname,"r").read() #建议分开写
print(data)
# 输出结果
1 2 3
4 5 6
7 8 9

# 遍历读取文件全部内容
infile = open(fname,"r")
for line in infile:
print(line)
# 输出结果
1 2 3
4 5 6
7 8 9

# 读取文件前n行内容
fname = "D:\\test01.txt"
infile = open(fname,"r")
for i in range(2): #读取文件前几行
data = infile.readline()
print(data)
# 输出结果
1 2 3
4 5 6

# 从第2行开始读取文件内容(多用于去除表头)
fname = "D:\\tes01.txt"
infile = open(fname,"r")
infile.readline() #去除表头
data = infile.readlines() #以列表方式读取
print(data)
# 输出结果
4 5 6
7 8 9

3、Python写入文件

outfile = open("D:\\test02.txt","w") #在D盘建一个名为test02的文件,若存在则不会创建
outfile.writelines(["Hello"," ","World"]) #写入数据
outfile.close()
infile = open("D:\\test02.txt","r").read() #读取数据
print(infile)
# 输出结果
Hello World

Python文件写入方法如下:

4、Python多个文件合并

# ==== 原始文件 ====
a1.txt
姓名 电话
王五 123456
张三 456789
李四 789456
熊七 456123

a2.txt
姓名 邮箱
王五 feifei1@qq.com
胜八 feifei2@qq.com
张三 feifei3@qq.com
章九 feifei4@qq.com

# ==== Python代码 ====
# 原始数据读入
ftele1=open('d:\\a1.txt','rb') #采用二进制方式读取,避免中文乱码
ftele2=open('d:\\a2.txt','rb')

ftele1.readline() #去除表头变量名
ftele2.readline()
lines1 = ftele1.readlines()
lines2 = ftele2.readlines()

list1_name = []
list1_tele = []
list2_name = []
list2_email = []

for line in lines1: #获取a1文件中的姓名和电话信息
elements = line.split()
list1_name.append(str(elements[0].decode('gbk'))) #采用gbk中文编码读入
list1_tele.append(str(elements[1].decode('gbk'))) #str()将文本读出来的bytes转换为字符类型

for line in lines2: #获取a2文件中的姓名和邮件信息
elements = line.split()
list2_name.append(str(elements[0].decode('gbk')))
list2_email.append(str(elements[1].decode('gbk')))

# 创建空白文件
lines = []
lines.append('姓名\t 电话 \t 邮箱\n')

#按索引方式遍历姓名列表1
for i in range(len(list1_name)):
s= ''
if list1_name[i] in list2_name:
j = list2_name.index(list1_name[i]) #找到姓名列表1对应列表2中的姓名索引位置
s = '\t'.join([list1_name[i], list1_tele[i], list2_email[j]])
s += '\n'
else:
s = '\t'.join([list1_name[i], list1_tele[i], str(' ----- ')])
s += '\n'
lines.append(s)

#处理姓名列表2中剩余的姓名
for i in range(len(list2_name)):
s= ''
if list2_name[i] not in list1_name:
s = '\t'.join([list2_name[i], str(' ----- '), list2_email[i]])
s += '\n'
lines.append(s)

ftele3 = open('d:\\a3.txt', 'w') #将数据写入文件
ftele3.writelines(lines)
ftele3.close()
ftele1.close()
ftele2.close()

# ==== 输出结果 ====
姓名 电话 邮箱
王五 123456 feifei1@qq.com
张三 456789 feifei3@qq.com
李四 789456 -----
熊七 456123 -----
胜八 ----- feifei2@qq.com
章九 ----- feifei4@qq.com

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子