这里的读写文件,与导入导出数据不同,导入数据是直接连接csv或xlsx文件,将数据导入进来或导出保存出去。

这里读文件,是可迭代的,文件使用完毕后还需要关闭。

1. 读取操作

open()
可以读取csv、txt、html文件

open(file,encoding,errors)file:文件或文件路径
encoding:文件编码解码方式,常见有utf-8,gbk
errors:如果读取文件前两个参数都确认没问题,还是读取失败,可使用errors='ignore'

例子:

open('data.txt').read()  #相对路径

read()
每次读取整个文件,通常用于将文件内容放到一个字符串变量中,若文件较大,可调用read(size)方法,每次最多读取size个字节的内容
readlines()
也是读取整个文件,但会自动将文件内容分析成一个行的列表
readline()
不同与前面,是每次只读取一行,当没有内存可以一次读取整个文件时,可以用readline()

2. 写入操作

2.1 追加保存

open(file,'a+')表示如果没有这个文件,就会新建一个
如果有这个文件,就不停往里面追加(a+)

注意写入完成后需要关闭文件

f=open(file,'a+')
f.write('内容')
f.close()

2.2 txt追加写入

直接写入

txtf='data.txt'
f=open(txtf,'a+',encoding='utf-8')
content1='A'
f.write(content1)
content2='B'
f.write(content2)
f.close()


使用for循环
尤其是爬虫时,抓取到数据后,常需要循环追加写入文件

txtf='data.txt'
f=open(txtf,'a+',encoding='utf-8')
contents=['A','B']
for content in contents:f.write(content)
f.close()

2.3 csv追加写入

csv数据格式里有列名,所以写入数据时,是一行行数据写入

直接写入

import csvfile='data.csv'
csvf=open(file,'a+',encoding='gbk',newline='')        #读取文件
writer=csv.writer(csvf)     #读取操作line1=('name','gender','age')
writer.writerow(line1)       #写入列名line2=('张三','男','19')
writer.writerow(line2)      #写入内容csvf.close()                 #关闭


使用for循环

datas=[('a','b','c'),('a1','b1','c1')]csvf=open(file,'a+',encoding='gbk',newline='')
writer=csv.writer(csvf)
writer.writerow(('name','gender','age'))for data in datas:writer.writerow(data)
csvf.close()

2.2 覆盖写入

open(file,'w+')

与上面一样,只是这里的参数是w+,表示写入的形式不是追加,而是第二次写入的内容会将第一次的覆盖

比较常用的是a+,追加写入

3. 导入数据

使用pandas包中的函数

  • pd.read_csv()
  • pd.read_excel()

4. 保存数据

数据框格式的数据可直接保存

  • df.to_csv()
  • df.to_excel()

另外,os库也很有价值,导入导出文件时,查看文件路径,更改文件路径

5. os路径库

os.getcwd() 返回当前文件路径(当前脚本运行的路径)
os.listdir(path)  列出路径中的所有文件名
os.mkdir(path)  在path路径中创建一个文件夹
os.chdir(path) 更改路径

5.1. 应用-查看全部变量,并创建

是之前搞数据时有个需求,就是需要导入50张表,每个表储存为一个变量(数据框),一个个导入并命名为新变量很浪费时间,且容易出错,可以利用循环批量导入,并命名。

1 首先50张表,放在一个文件夹下

import os
os.chdir('文件夹所在路径')
file_list=os.listdir()   #展示该文件夹下的所有csv/xlsx表的表名


2 获取全部局部变量

Or_data=locals()    #全部的局部变量

通过将全部局部变量赋一个变量名,接下来在新建变量时,就可以利用这个Or_data这个变量名。
是字典格式:

可以使用**dir()**查看局部变量名

没有自己创建的变量
3 通过for循环批量导入数据
为防止混乱,依据csv/xlsx的表名命名变量

for f in file_list:data=pd.read_excel(f,header=None)  #不需要导入列名Or_data['Or_'+f[3:9]]=data

使用以上形式,在Or_data这个集合内,新建了一批变量。**‘Or_’+f[3:9]**是新建变量的名称,根据导入的文件f 的文件名创建。
4 检查环境里是否有这些新建的变量
可以直接敲其中一个变量名,打印内容。

或者根据自己设置的命名规则,查看变量里有多少名称是符合的。如上面的命名,是**‘Or_’+f[3:9]**,变量名会是:
Or_D_2008、Or_D_2009、…

可使用正则表达式查看导入的变量有多少是上面的命名形式(当然这里的正则还不是特别精确):

import re
Vecs=[i for i in dir() if re.search('Or_[A-Z]',i)]  #查看目前导入的变量个数
len(Vecs)

输出:50

即目前在dir()里面,有50个新创建的变量

python读写、导入导出数据操作(简)相关推荐

  1. python(numpy,pandas9)——pandas 导入导出数据

    文章目录 前言 用于导入导出数据的函数 前言 根据 莫烦Python的教程 总结写成,以便自己复习和使用,这里我就不哟林地挂原创了

  2. toad导入数据_配置toad进行导入导出数据库操作

    最近需要对oracle进行导入导出操作,于是研究使用toad进行导入导出oracle数据库操作,现稍作记录. oracle的导入导出不管是否使用toad还是pl/sql工具进行操作,实际上最终都是通过 ...

  3. Java2017ci怎么导入_CI框架(CodeIgniter)实现的导入、导出数据操作示例

    本文实例讲述了CI框架(CodeIgniter)实现的导入.导出数据操作.分享给大家供大家参考,具体如下: 在libraies中引用PHPExcel这个类(phpexcel.php) public f ...

  4. php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...

    MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...

  5. Oracle使用数据泵导入/导出数据(expdp/impdp)【图文教程】

    Oracle使用数据泵导入/导出数据(expdp/impdp) 此类博客太多的坑,都不完整,要不执行着就报错执行不下去了,要不说的不清不楚,整理的一步步截图,100%成功. expdp数据导出 远程登 ...

  6. 转载-SQL Server各种导入导出数据方式的比较

    注:本文转载自 http://blog.csdn.net/nokiaguy/article/details/4684822 当我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新 ...

  7. mysql命令导入导出数据_mysql命令行导入和导出数据

    MySQL中导出CSV格式数据的SQL语句样本如下: select * from test_info into outfile '/tmp/test.csv' fields terminated by ...

  8. oracle导出表中某天数据命令,Oracle数据库使用命令行导入导出数据表及数据内容(本地、远程)...

    一.本机导入导出 1.数据库导出命令,导出用户userA下的表结构和数据: exp 用户名/密码@服务名 owner=用户名 file=导出文件指定存储路径 full=y 2.数据库导入命令,将use ...

  9. SQL Server数据库导入导出数据方式比较

    在我们建立一个数据库时,并且想将分散在各处的不同类型的数据库分类汇总在这个新建的数据库中时,尤其是在进行数据检验.净化和转换时,将会面临很大的挑战.幸好SQL Server为我们提供了强大.丰富的数据 ...

最新文章

  1. 得到当前函数堆栈调用
  2. 英语语法---动名词短语详解
  3. 惠普照片打印软件_被看错的打印机?原来打印机还可以这么玩
  4. mysql 唯一记录_mysql选择唯一记录
  5. eclipse指定JDK版本启动,解决version XXX of the JVM is not suitable for this product.Version:XXX 问题
  6. 02331数据结构 散列表
  7. html区分大小写字母吗,javascript变量区分大小写吗?
  8. 分页加载PullToRefreshLayout+PullableListView
  9. seci-log 1.06 发布 增加全文搜索
  10. 异地多活,企业上云的必然趋势!
  11. session超时问题
  12. Java、JSP网上购物系统
  13. 2012 r2 万能网卡驱动_MultiBeast | 黑苹果的驱动精灵简单使用解读
  14. 关于手机传感器的一些总结
  15. JQuery——横纵向菜单设计
  16. open函数里的newline
  17. 优质百度网盘资源分享(计算机篇)
  18. Web课程设计——小米商城页面实战(html,css,js实现)
  19. Springboot物资发放管理系统
  20. 纯css控制文字显示隐藏

热门文章

  1. 微信小程序自适应图片的时候底部总有一条白色的空白区像一条线该怎么办呢?
  2. java空气质量指数AQI换算
  3. python入侵手机_Python-Iocextract:高级入侵威胁标识符IoC提取工具
  4. 不要虚掷你的黄金时代,不要去倾听枯燥乏味的东西,不要设法挽留无望的失败,不要把你的生命献给无知、平庸和低俗。
  5. 天气预报接口_001_天气预报API
  6. Vue3+Ant-design项目启用ts/typescript
  7. python csv转tsv
  8. 一条sql语句查出男生前5名和女生前五名
  9. 固态变 SATAFIRM S11
  10. 【2023.3.18 美团校招】