2014-05-08 51 views
0

我再一次的人学习学习Python在锻炼; Tibial 17艰难地系列和 之一,碰上了:打开文件,写它,并打印出结果

out_file = open(to_file, 'w') 
out_file.write(indata) 

因此以下一些指令我把它转换到形式:

with open(to_file, 'w') as out_file: 
    out_file.write(indata) 

不知道它是应该做的事情最好的办法,但它奉命从文件读取时使用。所以真的我的问题是我如何打印出我写入out_file的内容。 我试图简单地用如下:

with open(to_file, 'rw+') as out_file: 
    out_file.write(indata) 
    print out_file.read() 

等几个方面,但我不能得到它打印任何东西。只是想知道是否甚至可以这样做,还是必须再次单独打开文件才能打印出来。

而且包括其他的问题在这里关于该主题的我如何使用打印与with

with open(to_file, 'r') as out_file: 
    print out_file.read() 

在此先感谢

+0

你为什么不只是印制印花呢?最后一个代码片段的问题究竟是什么? – jonrsharpe

+0

使用'r +'。 [教程在这里。](https://docs.python.org/2/tutorial/inputoutput.html#reading-and-writing-files) –

+0

写入数据后,你可能在文件的末尾。所以没有什么可读的:您需要将文件指针移回文件的开头并从那里读取。 – Evert

回答

0

的问题,下面的代码片段:

​​

是该文件的索引将在年底,因此,会有什么阅读。为了解决这个问题,只需使用seek()

with open(to_file, 'r+') as out_file: 
    out_file.write(indata) 
    out_file.seek(0) 
    for line in out_file.readline(): 
    print line 

虽然,写,在相同的代码块读取变得毫无意义在现实生活中,你仍然应该有你写的数据,因为I/O对磁盘要比你使用,以保持数据的RAM更昂贵,所以你可能只是做:

with open(to_file, 'w') as out_file: 
    out_file.write(indata) 

with open(to_file, 'r') as in_file: 
    for line in in_file.readline(): 
    print(line) 
0

只是打印你所编写的文件(我假设这是一个字符串) :

with open(to_file, 'rw+') as out_file: 
    out_file.write(indata) 
    print indata 

关于你的第二个问题,你可以阅读和打印seperately行:

with open(to_file, 'r') as out_file: 
    for l in out_file.readlines() 
     print l 
0

你写的文件后,你必须把它倒回至开始为了读你” ve刚刚写的:

In [152]: with open('test.file', 'w+') as out_file: 
    out_file.write(data) 
    out_file.seek(0) 
    print out_file.read() 
    .....:  
test string