python文件读取

一、 使用内置文件读取函数

1.open(file,r(rb、w、wb))

——相关参数

File指文件名,r指读,rb指以二进制形式读取,w指写(直接覆盖原有内容),wb以二进制形式写入

2.read()

一次读取全部内容

——使用with语句不需要显示关闭自动调用close,一次读取整个文件并将结果整体作为一个str返回

with open(r'ml-1m\ratings.dat') as f:
    data=f.read()
    print(type(data))
print(data)

 ——不使用with语句,需显示调用close关闭文件流

f=open(r'ml-1m\ratings.dat')
data=f.read()
print(data)
f.close()

2.readline()

一次只读取一行,返回str

with open(r'ml-1m\ratings.dat') as f:
    data=f.readline()
    print(type(data))
print(data)

<class 'str'>

1::1193::5::978300760

3.readlines()

每次读取一行将结果插入列表最终返回一个列表从下表结果可以看出一次读取一行每行作为一个字符串整体插入列表故长度有1000209

user=[]
with open(r'ml-1m\ratings.dat') as f:
    data=f.readlines()
    print(type(data),len(data))
print(type(data[0]))
print(data[:5])
for line in data:
    line=line.rstrip()
    user.append(line.split('::'))
print(user[:5])
print(type(user[0]))

<class 'list'> 1000209

<class 'str'>

['1::1193::5::978300760\n', '1::661::3::978302109\n', '1::914::3::978301968\n', '1::3408::4::978300275\n', '1::2355::5::978824291\n']

[['1', '1193', '5', '978300760'], ['1', '661', '3', '978302109'], ['1', '914', '3', '978301968'], ['1', '3408', '4', '978300275'], ['1', '2355', '5', '978824291']]

<class 'list'>

4.按行读取

user=[]
with open(r'ml-1m\ratings.dat') as f:
    for line in f:
        #去除每行最后的'\n'分割符
        
line=line.rstrip()
        #y'::'分割,并将每行数据插入列表user
        
user.append(line.split('::'))
print(user[:5])
print('长度',len(user))

 二、 使用pandas读取文件

Pandas.read_table(),从文件、URL、文件型对象中加载待分隔符的数据,默认分隔符为制表符‘\t’。返回数据类型为  DataFrame

参数sep指定分隔符形式,names可接受列表,作为DataFrame的列名

很简单直观,有木有!!!!

import pandas as pd

ratings=pd.read_table(r'ml-1m\ratings.dat',sep='::',header=None,names=['userid','movieid','ratings','timestamp'])

print('类型',type(ratings))

print(ratings[:5])

类型 <class 'pandas.core.frame.DataFrame'>

   userid  movieid  ratings  timestamp

0       1     1193        5  978300760

1       1      661        3  978302109

2       1      914        3  978301968

3       1     3408        4  978300275

4       1     2355        5  978824291

除了pandas.read_table()以外,还有

pandas.read_csv()从文件、URL、文件型对象中加载待分隔符的数据,默认分隔符为逗号。

pandas.read_fwf()读取定宽列格式数据(没有分隔符)

pandas.read_clipboard()读取剪贴板数据

三、 其他

数组读写入文件、json格式、piackle等再整理~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章