03月21, 2019

文件读写

我们在工作时应该经常会遇到修改文件内容的活。例如:每天有一个文件,现在要把整个月的数据拼接在一起,并且做个去重,莫非你要一个一个打开,然后复制粘贴?what the fuck!python可以帮你完成这项重复性的工作!let's go!

读文件

我们看文件都是打开某个文件,python也不例外,内置了一个open函数。我们写一个py文件:read_file.py

open("test.txt")

运行 python read_file.py,讲道理,会报错,2333。因为根本木有test.txt这个文件啊

Traceback (most recent call last):
File "read_file.py", line 1, in <module>
    open("test.txt")
IOError: [Errno 2] No such file or directory: 'test.txt'

我们先写一个test.txt文件吧:echo这个命令可以看做是输出某个字符串。

echo "hello world" > test.txt

再运行 python read_file.py,就木有报错了。然而并没有什么卵用,因为我们只是打开了文件,并没有读取文件

f = open("test.txt")
content = f.read()
f.close() # 一定要closeprint content

再运行 python read_file.py

zhuzekun@iZ280vh2cfiZ:~/file$ python read_file.py 
hello world

调用了read接口,就读取了文件内容。不过我们通常不这么做。万一。。。你一个文件比内存还大。。。这不崩了么。。。正确的姿势如下:

f = open("test.txt")
while True:
    lines = f.readlines(10000)
    if not lines:
        break
    for line in lines:
        print line.strip()

readlines中的这个参数,并不是行数,而是文件大小(字节数),所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比指定的值大一点(除最后一次调用 readlines(10000) 函数的时候)。通常情况下,Python 会自动将用户指定的值调整成内部缓存大小的整数倍。这样并不是一下把整个文件读完,而是一部分一部分读取,不会崩掉。

写文件

f = open("test.txt", "w")
f.writelines(["hhhhhh", "lllll"])
f.close()

这样test.txt就被写入了如下内容:

hhhhhhlllll

或者直接调用write:

f = open("test.txt", "w")
f.write("hhhhhhlllll")
f.close()

追加写文件

f = open("test.txt", "a")
f.writelines(["oooooo", "kkkkk"])
f.close()

这样,test.txt内容变成了:

hhhhhhlllll
ooooookkkkk

本文链接:http://www.yuqiaochuang.com/post/文件读写.html

-- EOF --

Comments

""