python 读取文件

1.open

f=open('D:/users/data.txt','r',encoding='utf-8')
for line in f.readlines():
    print(line)
f.close()
  • r表示是文本文件,rb是二进制文件(默认为文本文件)
  • 文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法

with open('D:/users/data.txt','r',encoding='utf-8') as f:
    print(f.readlines())
  • read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
  • readlines() 一次读取整个文件,readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for … in … 结构进行处理。
  • readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
    注意:
  • 这三种方法是把每行末尾的’\n’也读进来了,它并不会默认的把’\n’去掉,需要我们手动去掉。
with open('test1.txt', 'r') as f1:
    list1 = f1.readlines()
    
In[3]: list1
Out[3]: ['111\n', '222\n', '333\n', '444\n', '555\n', '666\n']  

去掉’\n’

with open('test1.txt', 'r') as f1:
    list1 = f1.readlines()
for i in range(0, len(list1)):
    list1[i] = list1[i].rstrip('\n')

In[5]: list1
Out[5]: ['111', '222', '333', '444', '555', '666']
  • 对于read()和readline()也是把’\n’读入了,但是print的时候可以正常显示(因为print里的’\n’被认为是换行的意思)
In[7]: with open('test1.txt', 'r') as f1:
    list1 = f1.read()
In[8]: list1
Out[8]: '111\n222\n333\n444\n555\n666\n'
In[9]: print(list1)
111
222
333
444
555
666

In[10]: with open('test1.txt', 'r') as f1:
    list1 = f1.readline()
In[11]: list1
Out[11]: '111\n'
In[12]: print(list1)
111

2.pandas

  • pd.read_csv(filepath):从 CSV 文件导入数据
  • pd.read_table(filepath):从限定分隔符的文本文件导入数据
  • pd.read_excel(filepath):从 Excel 文件导入数据
  • pd.read_sql(query, connection_object):从 SQL 表 / 库导入数据
pd.read_csv
  • 读取从hive中导出的文件
    按标签分为多列,hive默认的分隔符为‘\001’
    若不加sep,默认按,分隔
data=pd.read_csv(r'D:\Users\Administrator\Desktop\data.txt',sep='\001',header=None,names=['id','title','content','summary','label'])

常见错误

  • OSError: Initializing from file failed
    出现这个错误的原因很可能是你的路径名中带有中文
    解决
data = pd.read_csv('人效日报-20180701.csv', skiprows=1, header=None, engine='python')

参考:
https://www.cnblogs.com/zywscq/p/5441145.html
https://blog.csdn.net/sinat_41104353/article/details/85052343

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值