文件读取选项查询(Python)



我是这学期学编程的学生。在课堂上,我们一直在学习文件的打开、阅读和写作。

我们已经使用a_reader来实现文件打开的这些任务。我一直在阅读我们的相关文本,我注意到有一个CSV阅读器选项,我一直在使用。

我想知道是否有更多可能的方法来打开/读取文件,因为我试图在python及其相关内容中增加我的知识库。

编辑:

我更具体地指的是CSV,因为这是我们目前使用的文件类型。我们已经学习了CSV Reader和a_reader,下面是我们讲座中的一个例子。

def main():
 a_reader = open('IDCJAC0016_009225_1800_Data.csv', 'rU')
 file_data = a_reader.read()
 a_reader.close()
 print file_data
main()

这可能看起来过于宽泛,但我不知道,这就是为什么我问是否有以上两种方法。如果有人知道提供的类型,所以我可以阅读和研究他们。

如果您询问存储东西的位置,您将遇到的第一个接口是文件和套接字(假设网络连接像文件,请参阅http://docs.python.org/2/library/socket.html)。

如果你指的是文件格式(如csv),有很多!也许你自己能想到很多,但除了csv,还有html文件,图片(png, jpg, gif),存档格式(tar, zip),文本文件(.txt!), python文件(.py)。

读取文件的方法有很多种。

只是普通的open将接受文件名并将其作为行序列打开。或者,你可以在它上面调用read(),它会一次将整个文件读入一个大字符串。

codecs.open将接受文件名和字符集,并自动将每行解码为Unicode。或者,再一次,你可以调用read(),它会读取和解码整个文件一次成一个巨大的Unicode字符串。

csv.reader将获取一个文件或类似文件的对象,并将其作为CSV行序列读取。没有read()的直接等效物-但是您可以通过调用list任何序列转换为列表,因此list(my_reader)将给您一个行列表(每一行本身就是一个列表)。

zipfile.ZipFile将接受一个文件名,或一个文件或类似文件的对象,并将其作为ZIP归档文件读取。当然,这并不是逐行执行,但您可以逐个归档文件执行。或者你可以做一些更有趣的事情,比如按名称搜索存档文件。

有读取JSON和XML文档的模块,处理二进制文件的不同方式,等等。其中一些模块的工作方式不同—例如,您可以使用一个模块作为树来搜索XML文档,或者使用不同的模块逐个元素搜索XML文档。

Python有一个相当广泛的标准库,您可以在线找到文档。每个看起来应该能够处理文件的模块,可能都可以。

而且,除了标准库PyPI之外,Python包索引还有数千个附加模块。寻找一种读取YAML文档的方法?在PyPI中搜索yaml,你会找到它。

最后,Python使您可以很容易地自己添加这样的东西。像csv.reader这样的函数的框架就像这样简单:

def reader(fileobj):
    for line in fileobj:
        yield parse_one_csv_line(line)

你可以用任何你想要的东西替换parse_one_csv_line,你已经有了一个自定义阅读器。例如,这里有一个uppercase_reader:

def uppercase_reader(fileobj):
    for line in fileobj:
        yield line.upper()

事实上,你甚至可以把整个东西写在一行中:

shouts = (line.upper() for line in fileobj)

最好的是,只要阅读器一次只输出一行,阅读器本身就是一个类文件对象,所以可以将uppercase_reader(fileobj)传递给csv.reader,它就可以正常工作。

最新更新