1.Python读写TXT文件

1.1 写txt文件:

使用open('output.txt', 'w')以写的方式打开文件(若文件不存在则创建该文件),使用file.write()写入文件,其中参数必须为str字符串。

with open('output.txt', 'w') as file:
    data = '12\n23 34\n45 56 67'
    file.write(data)

1.2 读txt文件:

使用open('input.txt', 'r')以读的方式打开.txt文件。使用 file.readlines()逐行读取文件,每一行为一个字符串,将读取结果放在一个list中返回。使用with语句,可以在该语块结束后自动关闭文件,即相当于open()close()语句。

with open('input.txt', 'r') as file:
    data = file.readlines()
print(data)
print(type(data))
'''输出结果'''
['12\n', '23 34\n', '45 56 67']
<class 'list'>

使用 file.read()一次读取完整的文件,结果为一个str字符串。

with open('input.txt', 'r') as file:
    data = file.read()
print(data)
print(type(data))
'''输出结果'''
12
23 34
45 56 67
<class 'str'>

2.Python读写CSV文件

.csv格式的文件经常用于保存机器学习相关的数据集,比如MNIST等数据集。读写该格式的文件可以借用Pandas库。

2.1 写csv文件:

向.csv文件中写入数据时,首先需要构造一个DataFrame类型的数据,如下代码所示,通过传入一个dict类型的数据。由于传入的是一个dict类型,你所得到的数据的列的顺序可能不否和你的预期,此时可以通过save[['id', 'name', 'age']]设置顺序。当得到一个DataFrame类型数据上,则可以使用to_csv()将其输出,其中参数index=False指的是不需要行号。

import pandas
id = [1,2,3]
name = ['Bob', 'Tom', 'Ada']
age = ['11', '12', '13']
save = pandas.DataFrame({'id': id, 'name': name, 'age' : age})
save = save[['id', 'name', 'age']]
save.to_csv('output.csv',index = False)

打开文件’output.csv’可以看到如下样式的表格。

2.2 读csv文件:

使用read_csv('input.csv')读取.csv文件,其中第一个参数为.csv文件的路径,读取出来的数据以DataFrame格式保存。

import pandas
data = pandas.read_csv('input.csv')
print(data)
print(type(data))
'''输出结果'''
   id name  age
0   1  Bob   11
1   2  Tom   12
2   3  Ada   13
<class 'pandas.core.frame.DataFrame'>

可以通过DataFrame中的values属性值得到不带标题数据,该数据是numpy.ndarray类型数据,当然可以再通过tolist()方法返回list类型数据。

values = data.values
print(values)
print(type(values))
vlist = values.tolist()
print(type(vlist))
'''输出结果'''
[[1 'Bob' 11]
 [2 'Tom' 12]
 [3 'Ada' 13]]
<class 'numpy.ndarray'>
<class 'list'>

3.Python读写XLS文件(Excel文件)

3.1 写xls文件:

Pandas将xlrd和xlwt进行了封装,使得读写xls文件与读写csv文件类似。如下代码,是对.xls文件写入,使用pandas.ExcelWriter()打开一个要写入的.xls文件,然后将DataFrame格式的数据保存在打开的.xls文件中,其中sheet_name表示写入的sheet的名字。类似的with语句保证了在操作完文件后关闭该文件。

import pandas
id = [1,2,3]
name = ['Bob', 'Tom', 'Ada']
age = ['11', '12', '13']
save = pandas.DataFrame({'id': id, 'name': name, 'age' : age})
save = save[['id', 'name', 'age']]

with pandas.ExcelWriter('output.xls') as writer:
    save.to_excel(writer, index = False, sheet_name='Sheet1')

3.2 读xls文件

使用pandas读取.xls,也很方便,通过pandas.read_excel()实现对xls文件读取,其中sheet_name指定要读取的sheet。

import pandas
data = pandas.read_excel('input.xls', sheet_name='Sheet1')
print(data)
print(type(data))
   id name  age
0   1  Bob   11
1   2  Tom   12
2   3  Ada   13
<class 'pandas.core.frame.DataFrame'>

若想一次读取xls文件中所有sheet时,可以通过将sheet_name设置为None来实现。

import pandas
data = pandas.read_excel('input.xls', sheet_name=None)
print(type(data))
<class 'collections.OrderedDict'>

此时可以通过类似遍历字典的方式遍历所有的sheet

for d in data :
  print(data[d])
   id name  age
0   1  Bob   11
1   2  Tom   12
2   3  Ada   13

1.参考文档:

       [1]. http://pandas.pydata.org/pandas-docs/version/0.24/pandas.pdf