python常用的文件读写

更新时间:2019-02-02 14:09:00 点击次数:1299次
基础:.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]  # 张三
1
2
3
4
5
6
两种读法各有利弊,根据具体情况选用。

写文件
file = open('filename.txt', 'w', encoding='utf8')
    
file.writelines('序号'+ '\t' + '姓名' + '\t' + '年龄' + '\n')
file.writelines('1'+ '\t' + '张三' + '\t' + '20' + '\n')
1
2
3
4
进阶:用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')
1
如果仅仅是需要读文件中的内容,前两个就够用了。但侧重点在读取数据后,还需要对数据进行修改、删除、统计、归类等等操作,那就非常推荐pandas啦。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!