‘壹’ python对文件的读取问题
Python编程对文件的读取和写入操作还是很方便的,下面对文件操作的一个简单程序(test.py),代码如下:
defprocessFile(inputFile,outputFile):#定义一个函数
fin=open(inputFile,'r')#以读的方式打开文件
fout=open(outputFile,'w')#以写得方式打开文件
foreachLineinfin:#读取文件的每一行
line=eachLine.strip().decode('utf-8','ignore')#去除每行的首位空格,并且将文件编码转换成Unicode编码
outStr=line#我没对读入的文本进行处理,只是直接将其输出到文件
fout.write(outStr.strip().encode('utf-8')+' ')#去除首位的空格,并转回到utf-8编码,然后输出
fin.close()#关闭文件
fout.close()
processFile('myinputFile.txt','myoutputFile.txt')#调用该函数对文件进行处理
按照上面的程序写完之后,输入:python test.py 就能执行该程序了。
‘贰’ 如何利用 Python 读取数据科学中常见几种文件
前言
如果你是数据行业的一份子,那么你肯定会知道和不同的数据类型打交道是件多么麻烦的事。不同数据格式、不同压缩算法、不同系统下的不同解析方法——很快就会让你感到抓狂!噢!我还没提那些非结构化数据和半结构化数据呢。
对于所有数据科学家和数据工程师来说,和不同的格式打交道都乏味透顶!但现实情况是,人们很少能得到整齐的列表数据。因此,熟悉不同的文件格式、了解处理它们时会遇到的困难以及处理某类数据时的最佳/最高效的方法,对于任何一个数据科学家(或者数据工程师)而言都必不可少。
在本篇文章中,你会了解到数据科学家或数据工程师必须知道的几种常规格式。我会先向你介绍数据行业里常用的几种不同的文件格式。随后,我会向大家介绍如何在 Python 里读取这些文件格式。
PS:在后文中提到的数据科学家,同样也包括数据工程师以及所有的数据科学专家。
目录
文件格式是什么。数据科学家应当了解各种不同文件格式的原因。不同的文件格式以及从 Python 中读取这些文件的方法。
1. 逗号分隔值
2. XLSX
3. ZIP
4. 纯文本(txt)
5. JSON
6. XML
7. HTML
8. 图像
9. 分层数据格式
10. PDF
11. DOCX
12. MP3
13. MP4
1. 文件格式是什么。
文件格式是计算机为了存储信息而使用的对信息的特殊编码方式。首先,文件格式代表着文件的类型,如二进制文件或者 ASCII 文件等。其次,它体现了信息组织的方式。比如,逗号分隔值(CSV)文件格式用纯文本来储存列表数据。
为了识别一个文件的格式,你通常会去看这个文件的扩展名。比如,一个以“CSV”格式保存的名为“Data”的文件下方的文件名会显示为“Data.csv”。看到“.csv”这个扩展名,我们就会清楚地知道这是一个“CSV”文件,并且还可以知道其中的数据是以表格的形式储存的。
2. 数据科学家应当了解各种不同文件格式的原因。
通常,你碰到的文件类型取决于你当下构造的应用。举个例子,在一个图像处理系统中,你需要把图像作为输入和输出。所以,你所见到的文件大都是jpeg、gif 或者 png 格式的。
作为一个数据科学家,你需要了解各种文件格式的底层结构以及相应的优势和劣势。只有了解了数据的底层结构,你才能够进一步去探索它,或者决定如何来储存相关的数据。
选择一个最理想的文件格式来储存数据能够提升你的模型在处理数据时的性能。
现在,让我们讨论一下下方这些文件格式以及如何在 Python 中读取它们:
逗号分隔值(CSV)XLSXZIP纯文本(txt)JSONXMLHTML图像分层数据格式PDFDOCXMP3MP4
3. 不同的文件格式以及从 Python 中读取这些文件的方法。
3.1 逗号分隔值
逗号分隔值文件格式属于电子表格文件格式的一种。
什么是电子表格文件格式?
在电子表格文件格式中,数据被储存在单元格里。每个单元格都处于特定的行和列中。电子表格文件中的列拥有不同的类型。比如说,它可以是字符串型的、日期型的或者整数型的。最常用的电子表格文件格式包括:逗号分隔值(CSV)、Microsoft Excel 电子表格(xls)以及 Microsoft Excel Open XML 电子表格(xlsx)。
CSV 文件中的每一行都代表一份观察报告,或者也可以说是一条记录。每一个记录都包含一个或者更多由逗号分隔的字段。
有时你看你会遇到用制表符而非逗号来分隔字段的文件。这种文件格式被称为 TSV(制表符分隔值)文件格式。
下面是一个用 Notepad 打开的 CSV 文件。
在Python 中从 CSV 文件里读取数据
现在让我们看看如何在 Python 中读取一个 CSV 文件。你可以用 Python 中的“pandas”库来加载数据。import pandas as pd
df = pd.read_csv(“/home/Loan_Prediction/train.csv”)
上方的代码将会把 train.csv 文件加载进 DataFrame df 中。
3.2 XLSX文件
XLSX 是 Microsoft Excel Open XML 的文件格式,它同样可以归入电子表格文件格式这一类中。它是由 Microsoft Excel 开发的一种基于 XML 文件格式。Microsoft Office 2007 最先采用 XLSX 格式来储存数据。
在XLSX 中,数据被放在工作表的单元格和列当中。每个 XLSX 文件可能包含一个或者更多工作表,所以一个工作簿中可能会包含多个工作表。
下面是一个在 Microsoft Excel 中打开的“xlsx”文件。
上图显示的这个文件里包含多个工作表,这些工作表的名称分别为 Customers、Employees、Invoice 和 Order。图片中显示的是其中一个工作表——“Invoice”——中的数据。
从XLSX 文件读取数据
让我们一起来加载一下来自 XLSX 文件的数据并且定义一下相关工作表的名称。此时,你可以用 Python 中的“pandas”库来加载这些数据。import pandas as pd
df = pd.read_excel(“/home/Loan_Prediction/train.xlsx”,sheetname = “Invoice”)
上方的代码将会把来自“train.xlsx”文件的工作表“Invoice”加载进 DataFrame df 中。
3.3 ZIP 文件
ZIP 格式是一种归档文件格式。
什么是归档文件格式?
在归档文件格式中,你可以创建一个包含多个文件和元数据的文件。归档文件格式通常用于将多个数据文件放入一个文件中的过程。这么做是为了方便对这些文件进行压缩从而减少储存它们所需的存储空间。
有很多种常用的电脑数据归档格式可以创建归档文件。Zip、RAR 和 Tar 是最常用的3种用于压缩数据的归档文件格式。
因此,ZIP 文件格式是一种无损压缩格式,这意味着如果你用 ZIP 格式压缩了多个文件,那么在解压缩之后你能够完全恢复这些数据。ZIP 文件格式使用多种压缩算法来压缩文件。你可以通过 .zip 这个扩展名轻易地识别出一个 ZIP 文件。
在Python 中读取 .ZIP 文件
你可以通过导入“zipfile”包来读取 zip 文件。下方的代码可以实现读取“T.zip”中的“train.csv”文件。import zipfile
在这里我已经讨论了其中一种最常用的归档格式,也已经讨论了如何在 python 中打开这种归档格式。我不会再对其他的归档格式进行展开讨论。如果你想了解不同类型的归档格式并且想对其做出比较
‘叁’ Python读取文件内容的方法有几种
filename=open('i:\\install\\test.txt','r+')#读取xx路径xx文件;r+代表的是读写并存方式 print filename.read()#读取所有的文件
‘肆’ python读写文件
读文件
1)使用open()方法打开文件,返回一个文件对象
原型:open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
举例:f = open('test.txt', 'r')
test.txt表示文件路径(包含文件名,这个file参数可以是绝对或者相对路径)
r表示是读文本文件,rb是读二进制文本文件。(这个mode参数默认值就是r)
2)使用close()方法关闭文件
f.close()
打开后的文件必须关闭,因为文件对象会占用系统资源,系统打开文件数量也就有限了
3)打开文件时的异常处理
f=open('test.txt', 'r')
f.read()
f.close()
FileNotFoundError: [Errno 2] No such file or directory: 'test.txt'
文件读写时都有可能产生异常IOError(比如文件不存在),这样其后面的f.read(),f.close()就不会调用。为保证无论是否异常都可以关闭文件,一般使用try ... finally来处理:
try:
f = open('test.txt', 'r')
f.read()
finally:
if f:
f.close()
但这种写法过于繁琐,所以Python引入了with语句来自动调用close()方法:
with open('test.txt', 'r') as f:
f.read()
4)读文件 - read()、readline() 和 readlines()
read() 一次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件过大,内存不够,可以通过反复调用read(size)方法,每次最多读取size个字节的内容。
readline() 一次读取文件中一行内容,可反复调用
readlines() 一次读取所有内容并按行返回列表,该列表可以由for ... in ... 结构再进一步处理。
特别注意:
这三种方法是把每行末尾的'\n'也读进来了,如有需要就得我们手动去掉'\n'
with open('test.txt', 'r') as f:
list = f.readlines()
for i in range(0, len(list)):
list[i] = list[i].rstrip('\n')
写文件
1)写文件和读文件是一样的,唯一区别是open文件时,传入标识符不同,即'w'或者'wb'表示写文本文件或写二进制文件
f = open('test.txt', 'w')
f = open('test.txt', 'wb')
f = open('test.txt', 'a')
f.close()
特别注意:
1. 如果没有这个文件,会自动创建一个新文件;如果有,就会先把原文件的内容清空再写入;若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式
2. 写文件,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。
2)写文件 - write()、writelines()
write()方法和read()、readline()方法对应,是将字符串写入到文件中。
writelines()方法和readlines()方法对应,也是针对 列表 的操作。它接收一个 字符串行表 作为参数,将他们写入到文件中。
特别注意:
换行符不会自动的加入,需要显式的加入换行符。
f = open('test.txt', 'w')
f.writelines(["111\n", "222\n", "333\n"])
补充说明:
1)对于非默认编码(utf-8)的文件,需要open时添加encording参数,选择对应的编码方式
2)r+, w+, a+,可读可写
3)seek()方法,移动文件指针
seek(offset[, whence]) ,offset是相对于某个位置的偏移量。位置由whence决定,默认whence=0,从开头起;whence=1,从当前位置算起;whence=2相对于文件末尾移动,通常offset取负值。
‘伍’ python如何读取文件的内容
# _*_ coding: utf-8 _*_
import pandas as pd
# 获取文件的内容
def get_contends(path):
with open(path) as file_object:
contends = file_object.read()
return contends
# 将一行内容变成数组
def get_contends_arr(contends):
contends_arr_new = []
contends_arr = str(contends).split(']')
for i in range(len(contends_arr)):
if (contends_arr[i].__contains__('[')):
index = contends_arr[i].rfind('[')
temp_str = contends_arr[i][index + 1:]
if temp_str.__contains__('"'):
contends_arr_new.append(temp_str.replace('"', ''))
# print(index)
# print(contends_arr[i])
return contends_arr_new
if __name__ == '__main__':
path = 'event.txt'
contends = get_contends(path)
contends_arr = get_contends_arr(contends)
contents = []
for content in contends_arr:
contents.append(content.split(','))
df = pd.DataFrame(contents, columns=['shelf_code', 'robotid', 'event', 'time'])
(5)python读取lmdb文件扩展阅读:
python控制语句茄团
1、if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。
2、for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
3、while语句,当条件为真时,循环运行语句块。
4、try语句,与except,finally配合使用处理在程序运行中出现的异常情况。
5、class语句,用于定义顷纳拍类型。
6、def语句,用于定义函数和类型的方法。雀羡