关于文件读写的几个小例子(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中。下面就可以读了。上一篇: MySql中把一个表的数据插入到另一个表中的实现代码
下一篇: Java搞不清的几个小知识