对文件操作流程:

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件 

假设有一个文件,名为yesterday:

1、黄哥提醒:短时间内你开发项目的能力不可能达到有多年编程经验程序员的水平。用力不要用错方向。先要确保转行成功。
2、黄哥提醒:找工作时,公司一般都要做面试题,面试题考啥?一般都是算法题。所以重点先要通过** 语言学会编程,再学数据结构和算法,再刷题,顺利通过面试。
3、黄哥提醒:很多朋友热衷于所谓的项目训练,忽视基本功的训练,到面试时就挂。如果在面试过程中,让在白板上手写一个冒泡排序,归并排序,二叉树的遍历等都写不出来代码,你能证明你会编程?
4、黄哥提醒:等找到工作后,在牛逼leader的push下,有三到四个月时间,会成长很快的,会承担部分需求的开发。
5、黄哥提醒:在学习过程中,项目开发,能写出一个项目即可,重点要学数据结构和算法,再刷题。等转行成功后,在工作中成长。

基本操作:

f = open('yesterday') #打开文件yesterday
first_line = f.readline()
print('first line:',first_line) #读一行
print('我是分隔线'.center(50,'-'))
data = f.read()# 读取剩下的所有内容,文件大时不要用
print(data) #打印文件 
f.close() #关闭文件

打开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则会覆盖掉源文件的内容;】
  • a,追加模式。【可读;   不存在则创建;存在则只在源文件后面追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,同a

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

读取文件中的特定几行:

f2 = open("yesterday",'r',encoding = "utf-8")
'''for i in range(5):   这种读取方式不会按照源文件中的文件排列方式进行显示,而是在一行的末尾继续添加
    print(f2.readlines())
for line in f2.readlines():
    #print(line)  # 我们可以看出会添加换行,因为每一行后面默认有一个\n
    print(line.strip()) # 这样就可以删除换行,将源文件完整读取'''

# 通过读取下标来选定读取, 但需要注意的是readlines()只能读取小文件
for index,line2 in enumerate(f2.readlines()):
    if index == 3:
        print('------djaldjska--------')
        break
    print(line2.strip())

文件中内容的替换:

f = open("yesterday","r",encoding = "utf-8") # 读取源文件
f_new = open("yesterday.bak","w",encoding="utf-8") # 写一个新的文件,以便后面进行更换
for line in f:
    if "黄哥提醒" in line:
        line = line.replace("黄哥提醒","晖多多提醒")  # 用replace来进行文件的修改
    f_new.write(line)
f.close()
f_new.close()

with语句:

# 为了避免文件忘记关闭,利用with自动进行关闭
with open("yesterday","r",encoding="utf-8" ) as f:
    for line in f:
        print(line.strip())
# 同时with还支持同时对多个文件的上下文进行管理,即:
with open("file1","r") as obj1,open("file2","r") as obj2:
    pass
由于python有一条编程规范:一行代码不能超过80个字符,为了避免在打开多个文件时会超出
我们进行换行操作,即:
with open("file1","r") as obj1,\
        open("file2","r") as obj2:
    pass