python基础--文件读写

读文件

使用 open 函数或者 file 函数来读文件,使用文件名的字符串作为输入参数:

In [2]:
f = open('test.txt')
In [3]:
f = file('test.txt')

这两种方式没有太大区别。

默认以读的方式打开文件,如果文件不存在会报错。

可以使用 read 方法来读入文件中的所有内容:

In [4]:
 
     
text = f . read ()
print text
 
     
this is a test file.
hello world!
today is a good day.
python is good!

也可以按照行读入内容,readlines 方法返回一个列表,每个元素代表文件中每一行的内容:

In [5]:
 
     
f = open ( 'test.txt' )
lines = f . readlines ()
print lines
['this is a test file.\n', 'hello world!\n', 'python is good!\n', 'today is a good day.']

使用完文件之后,需要将文件关闭。

In [6]:
f.close()

事实上,我们可以将 f 放在一个循环中,得到它每一行的内容:

In [7]:
 
     
f = open ( 'test.txt' )
for line in f :
print line
f . close ()
 
     
this is a test file.
hello world!
today is a good day.
python is good!

删除刚才创建的文件:

In [8]:
 
     
import os
os . remove ( 'test.txt' )

写文件

我们使用 open 函数的写入模式来写文件:

In [9]:
 
     
f = open ( 'myfile.txt' , 'w' )
f . write ( 'hello world!' )
f . close ()

使用 w 模式时,如果文件不存在会被创建,我们可以查看是否真的写入成功:

In [10]:
print open('myfile.txt').read()
hello world!

如果文件已经存在, w 模式会覆盖之前写的所有内容:

In [11]:
 
     
f = open ( 'myfile.txt' , 'w' )
f . write ( 'another hello world!' )
f . close ()
print open ( 'myfile.txt' ) . read ()
another hello world!

除了写入模式,还有追加模式 a ,追加模式不会覆盖之前已经写入的内容,而是在之后继续写入:

In [12]:
 
     
f = open ( 'myfile.txt' , 'a' )
f . write ( '... and more' )
f . close ()
print open ( 'myfile.txt' ) . read ()
another hello world!... and more

写入结束之后一定要将文件关闭,否则可能出现内容没有完全写入文件中的情况。

还可以使用读写模式 w+

In [13]:
 
     
f = open ( 'myfile.txt' , 'w+' )
f . write ( 'hello world!' )
f . seek ( 6 )
print f . read ()
f . close ()
world!

这里 f.seek(6) 移动到文件的第6个字符处,然后 f.read() 读出剩下的内容。

In [14]:
 
     
import os
os . remove ( 'myfile.txt' )

二进制文件

二进制读写模式 b:

In [15]:
 
     
import os
f = open ( 'binary.bin' , 'wb' )
f . write ( os . urandom ( 16 ))
f . close ()
f = open ( 'binary.bin' , 'rb' )
print repr ( f . read ())
f . close ()
'\x86H\x93\xe1\xd8\xef\xc0\xaa(\x17\xa9\xc9\xa51\xf1\x98'
In [16]:
 
     
import os
os . remove ( 'binary.bin' )

关闭文件

Python中,如果一个打开的文件不再被其他变量引用时,它会自动关闭这个文件。

所以正常情况下,如果一个文件正常被关闭了,忘记调用文件的 close 方法不会有什么问题。

关闭文件可以保证内容已经被写入文件,而不关闭可能会出现意想不到的结果:

为此我们可以使用 try/except/finally 块来关闭文件,这里 finally 确保关闭文件,所有的写入已经完成。

In [22]:
 
     
f = open ( 'newfile.txt' , 'w' )
try :
for i in range ( 3000 ):
x = 1.0 / ( i - 1000 )
f . write ( 'hello world: ' + str ( i ) + ' \n ' )
except Exception :
print "something bad happened"
finally :
f . close ()
something bad happened

事实上,Python提供了更安全的方法,当 with 块的内容结束后,Python会自动调用它的close 方法,确保读写的安全:

In [24]:
 
     
with open ( 'newfile.txt' , 'w' ) as f :
for i in range ( 3000 ):
x = 1.0 / ( i - 1000 )
f . write ( 'hello world: ' + str ( i ) + ' \n ' )
所以,写文件时候要确保文件被正确关闭。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值