python,<一>读取文件open()

  在实际操作中,我们经常会读取文件,这个时候python为我们提供了一个open()的方法,供我们读取文件,通过help(open),我们可以获取open的方法

  f.close()关闭读取

  f.read(size=-1)读取文件size个字符,但未给size赋值或者赋值为负数时,读取的是文件剩余的所有字符,然后以字符串方式进行返回。

  f.readline()以写入模式打开,如果文件存在,则在末尾加入

  f.write(str)将字符串str写入文件

  f.writelines(seq)想文件写入字符串序列seq,seq应该 是一个返回字符串的可迭代对象

  f.seek(offset,from)在文件中移动当前读取文件的指针,

  f.tell()返回当前文件读取的指针位置

#file 是文件路径,mode 是文件打开模式,常用的应该还有一个encoding 编码格式。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

#这个是文件打开模式
''' 
    'r'       open for reading (default)  默认只读
    'w'       open for writing, truncating the file first 以写的方式打开文件,会覆盖源文件
    'x'       create a new file and open it for writing,创建一个新的文件打开并进行写入操作,如果这个文件已经存在,则会报错
    'a'       open for writing, appending to the end of the file if it exists 以写的方式打开文件,当执行写入操作时,会将写入的内容追加在原文件之后
    'b'       binary mode 以二进制方式打开文件
    't'       text mode (default) 以文本模式打开
    '+'       open a disk file for updating (reading and writing) 可读写模式,可添加到其他模式中用
    'U'       universal newline mode (deprecated) 通用换行符
'''

  假设我们有一文件,存放在E:\python\day-2\文字.txt目录下,txt内容为“

我喜欢寂寞,喜欢在夜深人静时独处一室,这样我就可以敞开心扉,与自己的心灵对话。我从中得到了反省,也使我更加向前。   
我问心灵:“心灵,我对家人是不是很关心?”   
心灵不语,但它在我的脑海中展现出了几幅画面。
画面中,我匆匆而去的关门声掩盖了妈妈那一声“小心点”的关怀;画面中,我对那饭菜不满的情绪,让爸爸无可奈何地摇摇头。
看了这两幅画面,我感到无比愧疚,我看到了自己对家人的冷漠,对亲情的淡漠。
于是,我向心灵保证,我以后一定要关心家人。心灵笑了。   
我又问心灵:“心灵,我对朋友是不是很友善?”   
心灵赞许的点了点头,说:“有朋友有了困难,你能够热情的帮助;有朋友遇到了伤心事,你能真诚地去安慰。对待朋友就应该这样!”   
我开心地笑了。   
我再一次问心灵:“我对他人是不是做到了尊重?”   
心灵无奈地摇摇头,说:“你还没有,有一次,一位同学不小心碰掉了你的书和笔,你就对他大加指责;有一位陌生人向你问路,你却因忙着回家而不理不睬;还有......”   
听了心灵的话,我万方愧疚,甚至有些无地自容。我发誓,我一定要伸出援助之手,以尊重的心态对待每一个人。   
在于心灵的对话中,我反省了自己。
我每天都在变化,我要感谢心灵,是它带我成长,是它,让我的成长更加和谐而美丽!

  那么我们通过利用open进行对它的操作。

#打开文件
>>> f = open('E:\python\day-2\文字.txt','r')
#读取文件                      
>>> f.read()
                              
'我喜欢寂寞,喜欢在夜深人静时独处一室,这样我就可以敞开心扉,与自己的心灵对话。
我从中得到了反省,也使我更加向前。 u3000u3000
我问心灵:“心灵,我对家人是不是很关心?” u3000u3000 心灵不语,但它在我的脑海中展现出了几幅画面。
画面中,我匆匆而去的关门声掩盖了妈妈那一声“小心点”的关怀;画面中,我对那饭菜不满的情绪,让爸爸无可奈何地摇摇头。
看了这两幅画面,我感到无比愧疚,我看到了自己对家人的冷漠,对亲情的淡漠。 于是,我向心灵保证,我以后一定要关心家人。
心灵笑了。 u3000u3000
我又问心灵:“心灵,我对朋友是不是很友善?” u3000u3000
心灵赞许的点了点头,说:“有朋友有了困难,你能够热情的帮助;有朋友遇到了伤心事,你能真诚地去安慰。对待朋友就应该这样!” u3000u3000
我开心地笑了。 u3000u3000 我再一次问心灵:“我对他人是不是做到了尊重?” u3000u3000
心灵无奈地摇摇头,说:“你还没有,有一次,一位同学不小心碰掉了你的书和笔,你就对他大加指责;有一位陌生人向你问路,你却因忙着回家而不理不睬;还有......” u3000u3000
听了心灵的话,我万方愧疚,甚至有些无地自容。我发誓,我一定要伸出援助之手,以尊重的心态对待每一个人。 u3000u3000
在于心灵的对话中,我反省了自己。
我每天都在变化,我要感谢心灵,是它带我成长,是它,让我的成长更加和谐而美丽!
' #再次读取文件 >>> f.read() #返回了空 ''

  当我们用f.read()第二次读取的时候,因为游标已经走到了文章的结尾,所以第二次读取为空。那么我们想再一次读取该文件的时候

#移动读取指针位置为起始位置
>>> f.seek(0,0)
                              
0
#读取文件一行
>>> f.readline()
                              
'我喜欢寂寞,喜欢在夜深人静时独处一室,这样我就可以敞开心扉,与自己的心灵对话。我从中得到了反省,也使我更加向前。 u3000u3000
'

#当前位置的游标
>>> f.tell()
                              
119

  遍历所有对话内容(每一行)  

  传统的方法,传统的方法虽然可以打印每一句话,但是效率不是很高。先看一下传统方法打印:

#首相将游标归到初始值
>>> f.seek(0,0)
                              
0
#利用list 来分割f
>>> list1 = list(f)
#循环打出每一句
>>> for each in list1:
                 print(each)    

  那么为了解决这个问题 Python为我们提供了直接打印的方式

>>> f.seek(0,0)
                              
0
>>> for each_line in f:
         print(each_line)

  接上边的例子,当我们想用write()来对刚才的文件进行写操作的时候,会发现不能写入,直接报错。因为我们操作这个文件的模式是r模式,也就是只读模式:

>>> f.write("我爱你")
                              
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    f.write("我爱你")
io.UnsupportedOperation: not writable
>>> 

  如果我们想对一个文件进行操作,那么我该如何操作,首先我们尝试一下open(file,'w')

# 这里利用w是一个只写操作
>>> f = open('E:\python\day-2\text.txt','w')
# 我们写入一个i love python          
>>> f.write("i love python")
          
13
# 尝试用read()来读取
>>> f.read()
# 报错了,说我们不能读              
Traceback (most recent call last):
  File "<pyshell#24>", line 1, in <module>
    f.read()
io.UnsupportedOperation: not readable
#这个时候如果没有进行下一步操作,你在e盘下看到的那个文件应该是0kb
#如果执行了close()操作,就会变成1kb,因为你要告诉Python说 你已经
#操作完毕了,可以把这些东西从内存中存储到硬盘了。
>>> f.close()
                              
 

  当我们用‘x’来进行写文件的时候,一定要注意目录下是否已经存在该文件,如果存在则会报错:

>>> e = open('E:\python\day-2\text.txt','x')
                              
Traceback (most recent call last):
  File "<pyshell#43>", line 1, in <module>
    e = open('E:\python\day-2\text.txt','x')
FileExistsError: [Errno 17] File exists: 'E:\python\day-2\text.txt'

  但是如果我们不想让报错,那么我们可以用w,这样不管这个文件存在不存在都不会报错,因为如果存在,它就会打开这个文件,如果不存在则会创建这个名字的文件。

#w创建
d = open('E:\python\day-2\text.txt','w')

  当我们想在一个文件的内容后边追加内容的时候我们就用到了‘a’,它的打开方式是打开文件,并将输入的字符串append到当前字符串的后边

>>> f = open('E:\python\day-2\文字.txt','a')
                              
>>> f.write(" are you sure?")
                              
14
>>> f.close()
                              
>>> f = open('E:\python\day-2\文字.txt','r')
                              
>>> f.read()
                              
'i love python are you sure?'
>>> f.close()
原文地址:https://www.cnblogs.com/pengpengzhang/p/8646253.html