Python读写文件的几种方式
一、pandas
pandas模块是数据分析的大杀器,它使得对于文件相关的操作变得简单。
看一下它的简单使用
import pandas as pd # 读取
df = pd.read_csv('all_forum_info.csv')
print(df.info()) # 写入
df.to_csv('data.csv')
具体用法参照我的博客pandas系列 https://www.cnblogs.com/zhangyafei/p/10685438.html
二、csv
1.读取
import csv # 读取
with open('all_forum_info.csv', encoding='utf-8') as myFile:
lines = csv.reader(myFile)
for line in lines:
print(line) ['hgroup', 'forum_topic', 'forum_url', 'count_topic', 'count_post']
['Welcome to Breastcancer.org', 'Info & Resources for New Patients & Members - Please No Posts!', 'https://community.breastcancer.org/forum/131', '11', '11']
['Welcome to Breastcancer.org', 'Acknowledging and honoring our Community', 'https://community.breastcancer.org/forum/135', '111', '5,372']
['Not Diagnosed but Concerned', 'Not Diagnosed But Worried', 'https://community.breastcancer.org/forum/83', '16,638', '133,217']
['Not Diagnosed but Concerned', 'Waiting for Test Results', 'https://community.breastcancer.org/forum/62', '6,712', '62,439']
['Not Diagnosed but Concerned', 'Benign Breast Conditions', 'https://community.breastcancer.org/forum/148', '795', '4,094']
['Not Diagnosed but Concerned', 'High Risk for Breast Cancer', 'https://community.breastcancer.org/forum/47', '2,146', '23,435']
['Tests, Treatments & Side Effects', 'Just Diagnosed', 'https://community.breastcancer.org/forum/5', '6,894', '103,851']
['Tests, Treatments & Side Effects', 'Diagnosed and Waiting for Test Results', 'https://community.breastcancer.org/forum/147', '592', '6,442']
2. 写入
"""
写入
'w'表示写模式。
首先open()函数打开当前路径下的名字为't.csv'的文件,如果不存在这个文件,则创建它,返回myFile文件对象。
csv.writer(myFile)返回writer对象myWriter。
writerow()方法是一行一行写入,writerows方法是一次写入多行。
注意:如果文件't.csv'事先存在,调用writer函数会先清空原文件中的文本,再执行writerow/writerows方法。
""" with open('data.csv', 'w', encoding='utf-8') as myFile:
myWriter = csv.writer(myFile)
myWriter.writerow(['title', '数学'])
myWriter.writerow([8, 'h'])
myList = [[1, 2, 3], [4, 5, 6]]
myWriter.writerows(myList)
data.csv
title,数学
8,h
1,2,3
4,5,6
修改分割符
csv.register_dialect('mydialect', delimiter='|', quoting=csv.QUOTE_ALL)
with open('test.csv', 'r') as myFile:
lines = csv.reader(myFile, 'mydialect')
# print(lines.line_num)
for line in lines:
print(line)
['1', '2', '3']
['2', '3', '4']
三、xlrd, xlwt
1. 读取
import xlrd
myWorkbook = xlrd.open_workbook('data.xlsx')
# 读取excel的三种方式
# 方式一
mySheets = myWorkbook.sheets() # 获取工作表list。
mySheet = mySheets[0] # 通过索引顺序获取。
# 方式二
# mySheet1 = myWorkbook.sheet_by_index(0) # 通过索引顺序获取。
# 方式三
# mySheet2 = myWorkbook.sheet_by_name('table') # 通过名称获取。
# 获取行数和列数
nrows = mySheet.nrows
ncols = mySheet.ncols
print(nrows, ncols)
# 获取一行和一列
myRowValues = mySheet.row_values(0) # i是行数,从0开始计数,返回list对象。
myColValues = mySheet.col_values(0) # i是列数,从0开始计数,返回list对象。
print(myRowValues, myColValues)
# 读取单元格数据
# myCell = mySheet.cell(0, 0) # 获取单元格,i是行数,j是列数,行数和列数都是从0开始计数。
# myCellValue = myCell.value # 通过单元格获取单元格数据。
myCellValue = mySheet.cell_value(0, 0) # 直接获取单元格数据,i是行数,j是列数,行数和列数都是从0开始计数。
print(myCellValue)
2. 写入
# 写入
import xlwt # 创建Excel工作薄
myWorkbook = xlwt.Workbook() # 添加Excel工作表
mySheet = myWorkbook.add_sheet('A Test Sheet') # 写入数据
myStyle = xlwt.easyxf('font: name Times New Roman, color-index red, bold on', num_format_str='#,##0.00') #数据格式
mySheet.write(1, 1, 1234.56, myStyle)
mySheet.write(2, 0, 1) #写入A3,数值等于1
mySheet.write(2, 1, 1) #写入B3,数值等于1
mySheet.write(2, 2, xlwt.Formula("A3+B3")) #写入C3,数值等于2(A3+B3) # 保存
myWorkbook.save('excelFile.xlsx')
xlutils结合xlrd可以达到修改excel文件目的
import xlrd
from xlutils.copy import copy workbook = xlrd.open_workbook('excelFile.xlsx')
workbooknew = copy(workbook)
ws = workbooknew.get_sheet(0)
ws.write(3, 0, 'changed!')
workbooknew.save('excelFilecopy.xls')
openpyxl可以对excel文件进行读写操作
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.writer.excel import ExcelWriter workbook_ = load_workbook("data.xlsx")
sheetnames = workbook_.get_sheet_names() # 获得表单名字
print(sheetnames)
sheet = workbook_.get_sheet_by_name(sheetnames[0])
print(sheet.cell(row=3, column=3).value)
sheet['A1'] = '47'
workbook_.save("data_new.xlsx")
wb = Workbook()
ws = wb.active
ws['A1'] = 4
wb.save("data_new2.xlsx")
xlsxwriter可以写excel文件并加上图表
import xlsxwriter def get_chart(series):
chart = workbook.add_chart({'type': 'line'})
for ses in series:
name = ses["name"]
values = ses["values"]
chart.add_series({
'name': name,
'categories': 'A2:A10',
'values': values
})
chart.set_size({'width': 700, 'height': 350})
return chart if __name__ == '__main__':
workbook = xlsxwriter.Workbook('H5应用中心关键数据及趋势.xlsx')
worksheet = workbook.add_worksheet("每日PV,UV")
headings = ['日期', '平均值']
worksheet.write_row('A1', headings)
index = 0
for row in range(1, 10):
for com in [0, 1]:
worksheet.write(row, com, index)
index += 1
series = [{"name": "平均值", "values": "B2:B10"}]
chart = get_chart(series)
chart.set_title({'name': '每日页面分享数据'})
worksheet.insert_chart('H7', chart)
workbook.close()
Python读写文件的几种方式的更多相关文章
- Java读写文件的几种方式
自工作以后好久没有整理Java的基础知识了.趁有时间,整理一下Java文件操作的几种方式.无论哪种编程语言,文件读写操作时避免不了的一件事情,Java也不例外.Java读写文件一般是通过字节.字符和行 ...
- android 随手记 读写文件的几种方式
java中多种方式读文件 一.多种方式读文件内容. 1.按字节读取文件内容 2.按字符读取文件内容 3.按行读取文件内容 4.随机读取文件内容 */ import java.io.BufferedRe ...
- delphi之读写文件的三种方式
一.Tstrings.Tstringlist procedure TForm1.Button2Click(Sender: TObject); var strlist: TStringList; pat ...
- golang读写文件的几种方式
golang中处理文件有很多种方式,下面我们来看看. (1)使用os模块 先来看看如何查看文件属性 package main import ( "fmt" "os&quo ...
- python读文件的4种方式
1.直接打开就读 with open('filepath','r') as f: for line in f: print(line) print('一行数据') 虽然f是一个文件实例,但可以通过以上 ...
- python读取文件的几种方式
http://www.cnblogs.com/nkwy2012/p/6023710.html
- Python 读写文件的正确方式
当你用 Python 写程序时,不论是简单的脚本,还是复杂的大型项目,其中最常见的操作就是读写文件.不管是简单的文本文件.繁杂的日志文件,还是分析图片等媒体文件中的字节数据,都需要用到 Python ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- [Python]读写文件方法
http://www.cnblogs.com/lovebread/archive/2009/12/24/1631108.html [Python]读写文件方法 http://www.cnblogs.c ...
随机推荐
- Xml文档规则
Xml文档规则: 名字中不能包含空格 名字不能以数字或标点符号开头 左尖括号 < 后不可以有空格 起始和结束标签的大小写必须一致(严格区分大小写) XML文件中出现的第一个元素是根元素 XML文 ...
- Python函数二(函数名,闭包,迭代器)之杵臼之交
函数名的使用: 函数名可以作为值,赋值给变量. 函数名可以作为参数传参给函数. 函数名可以作为返回值. 函数名可以作为元素存储在容器里. 闭包:在嵌套函数内,使用外层局部变量(非全局变量)就是一个闭包 ...
- 【记录】IntelliJ IDEA—IDEA2018-2019激活
摘要 最智能的java ide [有能力请支持正版] 1.将 0.0.0.0 account.jetbrains.com 和 0.0.0.0 www.jetbrains.com添加到 host ...
- kunbernetes-快速入门
1.入门概述 本文以在容器云上部署一个nexus3应用为例,通过通过一步步的操作,帮助用户快速的对Kubernetes有一个快速和整体的认识.通过快速入门,可以提供如下知识内容: 在集群中部署一个容器 ...
- slice()和splice()区别
1.slice(start,end):方法可从已有数组中返回选定的元素,返回一个新数组,包含从start到end(不包含该元素)的数组元素. 注意:该方法不会改变原数组,而是返回一个子数组,如果想删除 ...
- 消耗CPU和内存的脚本
用法 ./shell.sh 4 (4为4内核) 查看cpu内核数量 > lscpu 执行后会出现一堆kill命令,方便kill掉进程 #!/bin/bash endless_loop() { e ...
- day 14 递归、匿名函数、内置函数
三目运算符 # 三目(元)运算符:就是 if...else...语法糖# 前提:简化if...else...结构,且两个分支有且只有一条语句# 注:三元运算符的结果不一定要与条件直接性关系cmd = ...
- Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)
目录 Python5大擅长领域 WEB开发 网络编程 科学运算 GUI图形开发 运维自动化 Python在世界上的知名应用 国外 谷歌 CIA NASA YouTube Dropbox Instagr ...
- Java面试准备之IO
Java IO Java IO 分类 Java BIO: 同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线 ...
- Sublime 禁止自动升级
打开SUblime Prefreences 找到"设置-用户" 添加 "update_check":false, 即可禁用默认升级 此时完整如下 { &q ...