欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于文件读写的几个小例子(python)

程序员文章站 2024-02-19 12:14:34
...

在平时学习的时候,总是感觉到看的书和实际的应用有些对不上号,因为书本上毕竟只能讲一些最基本的用法和操作,而实际应用中是很少有如此简单的应用的,所以在博客上面把自己实际写代码时的一些小收获记录一下。虽然可能有些杂乱,不过先记下来也许有用,就先从文件读写开始吧,以后如果还有这方面的内容的话,再在这上面更新。

一、如何读写文件

几乎所有的书本中都给了如何读写文件的基本操作,比如下面这个程序

file = open("newfile.txt", "w")
file.write("hello world")
file.close()

这是一个最简单的关于文件写的应用,程序运行完了以后,就可以打开这个newfile.txt的文件,并且看到里面的内容。那么读文件呢?

import os

f = open('newfile.txt', 'r')
print f.read()
这个程序的最后,我用了一个print操作来显示结果,这样看起来更直观一些,虽然在实际应用的时候可能不会print。
但是谁会利用这个来写文章呢?谁也不会,这个应该都是用来批量化读取和写入数据。那么批量化读取数据的程序应该怎么写呢?

二、如何对一个文件读写多个数据

实际上这个问题经常用的到,特别是在处理大量数据的时候经常用的上,这种程序在网络上、教材上面也比较多见,例如下面的例子。

import os

f = open('newfile.txt','r')
char = f.read(1)
while char:
    print char
    char = f.read(1)
f.close()
这段程序的基本思想就是设置一个值char,通过循环每次读取一个字符长度的数据到char中去。但可能也不是很常见。

三、如何读取一个文件的多行数据

在实际工作中,特别是处理一些CSV格式的数据,至少都得是几十万行,用这个方法可能会好一点,用下面这样的语句。

import os

f = open('newfile.txt','r')
for line in f.readlines():
    print line
f.close()

这段程序的基本思想就是设置一个值line,通过for循环每次读取一行长度的数据到line中去,只不过在这里直接提供了一个readlines函数,可以让我们少写一点代码。

四、如何读取一个文件夹下的多个文件

如果我们要处理一个文件夹的数据,这个文件夹下有好多文件,需要一次读取怎么办呢,可以参考下面的代码。

import os

# 遍历指定目录,显示目录下的所有文件名
def eachFile(filepath):
    pathDir =  os.listdir(filepath)
    for allDir in pathDir:
        child = os.path.join('%s%s' % (filepath, allDir))
        print child.decode('gbk') # .decode('gbk')是解决中文显示乱码问题

# 读取文件内容并打印
def readFile(filename):
    fopen = open(filename, 'r') # r 代表read
    for eachLine in fopen:
        print "读取到得内容如下:",eachLine
    fopen.close()
这段代码是我从往上面找的,自己没有验证过,因为还没有用到过这样的情况,请大家自行判别,如果以后我遇到的话再修改这一段。

五、文件夹下还有文件夹怎么办?

在做一次作业的时候,遇到了这样的情况,就是文件夹下还有文件夹,

def getfiles(filepath = './'):
    filelist = os.listdir(filepath)#返回指定的文件夹包含的文件或文件夹的名字的列表
    for i in filelist:
        path = os.path.join(filepath,i)#把目录和文件名合成一个路径
        if os.path.isdir(path):#判断路径是否为目录,如果是,继续调用函数
            getemlfiles(path)
        else:#如果不是,就把路径添加到files中
            files.append(path)
    return files
这段代码的基本思想就是,先设置一个filelist的参数用来存储指定文件下所有的文件和文件夹,然后通过路径拼接函数os.path.join()把目录和文件名合成一个路径,然后判定是否为路径,如果是路径的话,就继续调用此循环;如果不是路径的话(就是文件咯),把路径和文件名拼接在一起的参数存到lifes中。下面就可以读了。
相关标签: python