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