python常用的文件读写

基础:.txt文件的读写

  • 读文件
    filename.txt如下:
    张三 男 20
    李四 男 25
    赵五 女 18

按行读取 readline()

    file = open('filename.txt', 'r', encoding='UTF-8')
 
    while True:
        content = f.readline()  # 按行读
        
        if content == '':
            break
        
        content = content.strip().split()
        name = content[0]  # 张三 李四 赵五

读取所有 readlines()

    file = open('filename.txt', 'r', encoding='UTF-8')
 	
 	content = file.readlines()
	for line in content:
	print(line) # 张三 男 20
	name = line[0]  # 张三

两种读法各有利弊,根据具体情况选用。

  • 写文件
    file = open('filename.txt', 'w', encoding='utf8')
    
    file.writelines('序号'+ '\t' + '姓名' + '\t' + '年龄' + '\n')
    file.writelines('1'+ '\t' + '张三' + '\t' + '20' + '\n')

进阶:用xlrd和xlwt对.xls文件进行读写

  • xlrd模块
    xlrd模块用来读取.xls文件
	import xlrd
	 
	# 打开一个.xls文件
	workbook = xlrd.open_workbook('filename.xls')
	
	# 文件的第一个sheet
	sheet = workbook.sheet_by_index(0)
	
	# 文件的总行数
	nrows = sheet.nrows
	
	# 按行查询文件内容
	for i in range(1, nrows):
		row = sheet.row_values(i)  # 第i行的所有信息
		content = row[0]  #  第i行第0列的内容
  • xlwt模块
    xlwt模块可以将数据写入.xls文件
	import xlwt
	
	# 创建一个xls文件
	file = xlwt.Workbook(encoding='utf-8')
	
	#新建一个sheet,并且给它命名
	table = file.add_sheet('rules')
	
	#在这个sheet下,用write填写,第一个参数是行,第二个是列,第三个是单元格内容
	table.write(0, 0, '序号')
	table.write(0, 1, '姓名')
	table.write(1, 0, '1')
	table.write(1, 0, '张三')
	
	# 保存文件
	xls_file.save('filaname.xls')

所以上面的例子可以生成:

序号 姓名
1 张三

注意,xlrd可以读取.xls和.xlsx类型的文件。
但是xlwt只能生成.xls类型的文件,不能生成.xlsx类型的文件,会报错。

再进阶:利用pandas进行文件的读取

pandas非常之好用,可以读取txt, csv等各种类型的文件,再加上pandas自带的各种功能,对数据进行统计、分析就变得简单了。
read_table

	df = pd.read_table('filename.txt', header=None, names=['name', 'gender', 'age'])
	
	# 统计
	print(df.age.value_counts())  # 数一下同一个年龄的有多少人
    print(df.groupby(['age']).size())  # 也是统计age列的个数
    print(df.groupby(['age', 'gender']).size()  # 高级的地方在于可以安排多个列排序
    # 相当于先按照age排序,然后age相同的再用gender区分。和excel的高级筛选差不多。

read_csv

df = pd.read_csv('filaname.csv')

如果仅仅是需要读文件中的内容,前两个就够用了。但侧重点在读取数据后,还需要对数据进行修改、删除、统计、归类等等操作,那就非常推荐pandas啦。

再进阶:用docx模块对.doc文件进行读写

未完待续……

猜你喜欢

转载自blog.csdn.net/weixin_42294274/article/details/86498474