Python 文件操作(一)

一、注意事项

A.能调用方法的一定是对象

B.文件的操作流程:

  1. 打开文件,得到文件句柄并赋值给一个变量

  2. 通过句柄对文件进行操作

  3. 关闭文件

二、操作实现方法

'''
文件名:小双双
文件内容如下:

昨夜寒蝉不住鸣。
惊回千里梦,已三更。
起来独自绕阶行。
人悄悄,帘外月胧明。
白首为功名,旧山松饰老,阻归程。
欲将心事付瑶琴。
知音少,弦断有谁听。
'''

1.

1 f = open('小双双', 'r')
2 print(f.readline().strip())  # 读取文件第一行内容
3 
4 # 执行第二次的时候读取第二行内容,因为第一次读取完成后自动把光标放到了第一行末尾
5 print(f.readline().strip()) 

>>> 昨夜寒蝉不住鸣。

       惊回千里梦,已三更。

2.

1 f = open('小双双', 'r')
2 print(f.readlines()) #读取所有内容,按行放到列表中
3 f.close()

>>> ['昨夜寒蝉不住鸣。\n', '惊回千里梦,已三更。\n', '起来独自绕阶行。\n', '人悄悄,帘外月胧明。\n', 

       '白首为功名,旧山松饰老,阻归程。\n','欲将心事付瑶琴。\n', '知音少,弦断有谁听。']

3.

1 # 逐行打印文件内容
2 f = open('小双双', 'r')
3 
4 for n in f.readlines(): 
5     print(n.strip())
6 f.close()
>>>昨夜寒蝉不住鸣。
   惊回千里梦,已三更。
   起来独自绕阶行。
   人悄悄,帘外月胧明。
   白首为功名,旧山松饰老,阻归程。
   欲将心事付瑶琴。
   知音少,弦断有谁听。

4.
 1 # 在第3行后添加一行字符串
 2 f = open('小双双', 'r')
 3 data = f.readlines()
 4 f.close()
 5 number = 0
 6 
 7 for n in data: # 逐行打印文件内容
 8     if number == 3:
 9         n = ''.join((n.strip(),'\n小可爱')) #字符串拼接用.join(),且其只能接收一个参数
10     print(n.strip())
11     number += 1
>>>昨夜寒蝉不住鸣。
   惊回千里梦,已三更。
   起来独自绕阶行。
   人悄悄,帘外月胧明。
   小可爱
   白首为功名,旧山松饰老,阻归程。
   欲将心事付瑶琴。
   知音少,弦断有谁听。
5.
1 f = open('小双双', 'r')
2 
3 print(f.tell())  #显示光标此时的位置
4 for n in f:  #for内部将f对象做成一个迭代器,用一个取一个
5     print(n.strip())
6 print(f.tell())
>>>0
   昨夜寒蝉不住鸣。
   惊回千里梦,已三更。
   起来独自绕阶行。
   人悄悄,帘外月胧明。
   白首为功名,旧山松饰老,阻归程。
   欲将心事付瑶琴。
   知音少,弦断有谁听。
   147

6.
1 f = open('小双双', 'r')
2 # gbk编码一个中文占两位
3 print(f.tell())   #显示光标此时的位置
4 print(f.read(4))
5 print(f.tell())
>>>0
   昨夜寒蝉
   8

7.
1 f = open('小双双', 'r')
2 # gbk编码一个中文占两位   
3 print(f.read(4))
4 print(f.tell())#显示光标此时的位置
5 
6 f.seek(4)   # 调节光标的位置
7 print(f.read(4))
>>>昨夜寒蝉
   8
   寒蝉不住

8.
1 f = open('小双双', 'a')
2 print(f.isatty()) # 判断是否与终端设备相关联,是返回True

 

1 f = open('小双双', 'a')
2 
3 #数据截断,在‘a’模式下截取原有数据的前6位,在‘w’模式下格式化文件
4 f.truncate(6) 

9.'a+'  'w+'  'r+'  模式

f = open('小双双', 'w+')  #w+模式,执行该语句原文件格式化

print(f.readline())  #所以执行该语句输出为空

f.write('小可爱')    #重新写入字符
print(f.readline())   #再次读取还为空,因为上句操作完成后光标移到了最后

f.seek(0)  # 调整光标位置
print(f.readline())

f.close()

 >>>

   小可爱
 1 f = open('小双双', 'r+')  #r+模式
 2 
 3 print(f.readline())  # 输出原文件内容,
 4 
 5 f.write('小可爱')    #在原文件内容的后面接着写入字符
 6 print(f.readline())  #读取为空,因为上句写操作完成后光标移到了最后
 7 
 8 f.seek(0)  # 调整光标位置到0
 9 print(f.readline())
10 
11 f.close()
>>>小可爱

   小可爱小可爱
 1 f = open('小双双', 'a+')  #a+模式,追加内容;语句执行完光标到最后位置,
 2 
 3 print(f.readline())  # 输出为空,
 4 
 5 f.write('小可爱')    #在原文件内容的后面追加内容
 6 print(f.readline())  #读取为空,因为上句写操作完成后光标移到了最后
 7 
 8 f.seek(0)  # 调整光标位置到0
 9 print(f.readline())  #输出现有内容
10 
11 f.close()

 >>>

   小可爱小可爱小可爱

三、文件的安全打开方式:
1 with open('小双双', 'r') as f:  # with方式打开文件,后面不需要关闭文件。推荐文件操作使用with
2 
3 # with同时管理多个文件对象
4 with open('小双双', 'r') as f_read, open('小双双', 'w') as f_write:
5     for line in f_read:
6         f_write.write(line)

 

 
posted @ 2019-01-21 18:43  自动变量  阅读(1239)  评论(0编辑  收藏  举报