Python-2:文件读取和输出

Python文件读取和输出

1. 利用Pandas读取

首先,需要:
import pandas as pd
对于各个文件格式,读取的语句分别如下:

  • .csv
    示例:读取一个csv文件,将数据存于一个名为name的DataFrame.
path="C:/Users/h/Desktop/wordflag.csv"
name=pd.read_csv(path,sep=',',encoding='gbk')
字段含义
read_csv读一个csv文件
sep分隔符,默认为","
encoding编码方式,一般为’gbk’。若无法读取,应将文件另存为UTF-8格式,再按encoding='utf-8’读取
  • .txt
    示例:读取一个txt文件,将数据存于一个名为name的DataFrame.

仍然使用read_csv() 函数。pandas读写csv和txt两种文件的用法一样。

path="C:/Users/h/Desktop/wordflag1.txt"
name=pd.read_csv(path,sep=',',encoding='gbk')
  • excel
    示例:读取一个xlsx文件,将数据存于一个名为name的DataFrame.
path="C:/Users/h/Desktop/wordflag.xlsx"
df = pd.read_excel(path,sheetname=1)
#读excel表的第2个sheet
字段含义
pd.read_excel(path[, sheetname=sheet_index])读excel文件,默认读第一个sheet(sheet_index=0)
path文件后缀可以是xlsx or xls
sheetname表示读第几个sheet,从0开始计数,默认为0.

也可一次性输入多个sheet,如下:

path="C:/Users/h/Desktop/wordflag.xlsx"
#读第1、2、4个sheet
df = pd.read_excel(path,sheetname=[0,1,3])

df
Out[1]: 
OrderedDict([(0,    哈哈哈  嘿嘿嘿
              0  哈哈哈  嘿嘿嘿
              1  哈哈哈  嘿嘿嘿
              2  哈哈哈  嘿嘿嘿
              3  哈哈哈  嘿嘿嘿), (1,    A  B
              0  A  B
              1  A  B
              2  A  B
              3  A  B), (3,    1  2
              0  1  2
              1  1  2
              2  1  2)])

结果为一个OrderedDict对象,查看df[0]得:第一个sheet的数据组成的DataFrame。

df[0]
Out[2]: 
   哈哈哈  嘿嘿嘿
0  哈哈哈  嘿嘿嘿
1  哈哈哈  嘿嘿嘿
2  哈哈哈  嘿嘿嘿
3  哈哈哈  嘿嘿嘿

常用读取函数汇总:

函数功能
read_csv读取文件、URL中带分隔符的数据,默认分隔符为英文逗号","
read_table读取文件、URL中带分隔符的数据,默认分隔符为制表符"\t"
read_fwf读取固定列宽数据,无分隔符
read_clipboard读取剪切板数据

2. 利用Pandas写出

对于各个文件格式,写出的语句分别如下:

  • .csv
path="C:/Users/h/Desktop/wordflag.csv"
name.to_csv(path)

运行后生成一个名为wordflag的csv文件,存储于路径"C:/Users/h/Desktop/“

  • .txt
    仍然使用 to_csv() 函数。pandas读写csv和txt两种文件的用法一样。
path="C:/Users/h/Desktop/wordflag.txt"
name.to_csv(path)

运行后生成一个名为wordflag的txt文件,存储于路径"C:/Users/h/Desktop/“

  • excel
    可用pandas函数to_excel将DataFrame数据输出为xlsx或xls文件。
path="C:/Users/h/Desktop/wordflag1.xlsx"
name.to_excel(path)

3. 利用open() 方法读取文件

用read_table函数。

path="C:/Users/h/Desktop/wordflag.txt"
with open(path,'r') as f:
    name = pd.read_table(f)
字段含义
with表示"在…的条件下,执行后续语句"
open(path[,mode]) as filename以mode方式打开path处的文件,并取别名为filename。mode默认为只读(“r”)
各种mode
r以只读方式打开文件,从头开始读。
r+打开一个文件用于读写,从头开始读。
w打开一个文件只用于写入。若文件已存在,则删除原内容从头写入。若文件不存在,创建新文件。
w+打开一个文件用于读写。若文件已存在,则删除原内容从头写入。若文件不存在,创建新文件。
a打开一个文件用于追加。若文件已存在,则追加内容写入。若文件不存在,创建新文件。
a+打开一个文件用于读写。若文件已存在,文件打开时会是追加读写模式。若该文件不存在,创建新文件。

逐行读取

a=[]
#生成一个空列表
path="C:/Users/h/Desktop/wordflag1.txt"
with open(path) as f: 
#打开path处的文件,取别名为f
    for i, line in enumerate(f.readlines()):
#穷举文件中读到的行,i为行编号,line为行内容
#f.readlines()为列表格式,列表每一元素为一行
        a.append(line)
#在列表a中追加读到的line
    f.close()
函数功能
enumerate(object)穷举所有的组合,其中object为可迭代的对象,如列表
readline( )文件的方法,用来读行数据
append(data)列表、DataFrame均有的方法,追加数据data

4. 批量读取

较为超前,可等到了解DataFrame和循环体再看。

import pandas as pd
import os
import sys
import csv

#设置maxint,避免数据溢出
maxInt = sys.maxsize 
decrement = True 
while decrement: 
      decrement = False 
      try: 
          csv.field_size_limit(maxInt) 
      except OverflowError: 
           maxInt = int(maxInt/10) 
           decrement = True 
#得到根目录
os.chdir('D:/chukumingxiweek20')
file_chdir=os.getcwd()
#文件名列表
filecsv_list=[]
#遍历根目录下的文件
for root,dirs,files in os.walk(file_chdir):
    for file in files:
#选取其中的csv文件
        if os.path.splitext(file)[1]=='.csv':
#在文件名列表中追加文件名
            filecsv_list.append(file)

#创建一个空DataFrame

data=pd.DataFrame()
for csv in filecsv_list[0:]:
    try:
#读取
        datatemp=pd.read_csv(csv,sep=None,encoding='utf-8',error_bad_lines=False)
#打印当前读取的文件名
        print(csv)
 #追加当前文件数据
        data=data.append(datatemp)
    except TypeError:
          pass
    continue

下期预告:字符串操作、循环体、条件语句

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值