跳至正文
View Categories

1 min read

主要内容 #

  1. 关键字with语法
  2. 读写文件的推导表达式

1. 关键字with语法 #

每次读或写完文件都必须调用close()函数来关闭文件,这比较繁琐和麻烦,也容易忘掉! 如果读或写文件过程中产生错误,后面的close()函数也不会被调用,就无法正确的关闭文件。 可以通过关键字:with,来执行文件的操作,就不用再调用close()函数。 with语法如下:
with context [as var]:
    process_something
context: 表达式 var: 用来保存context表达式返回的对象,可以是单个或多个返回值。 process_something:处理var的模块 当with用在打开文件的语法中时,表达式如下:
with open(filename, mode) as f:
      process(f)
在with的语法情况下,不用去显式写f.close()函数。 因为with已经包括这个函数,也就完全不用担心忘了关闭文件。

2. 读写文件的推导表达式 #

  • 读文件推导表达式
  • 在读文件时,不使用with的方法:
    list_a = []
    f = open("data_read.txt", "r") 
    for line in f:
         list_a.append(line.strip())
    f.close()
    使用with的方法:
    list_a = []
    with open("data_read.txt", "r")  as f:
         for line in f:
              list_a.append(line.strip())
  • 写文件推导表达式
  • 在写文件时,不使用with的方法:
    list_a = ["bob", "dashima", "123"]
    f = open("data_write.txt", "w") 
    for ins in list_a:
         f.write(ins + "\n")
    f.close()
    使用with的方法:
    list_a = ["bob", "dashima", "123"]
    with open("data_write.txt", "w")  as f:
           f.write("\n".join(list_a))
  • 读写文件推导表达式
  • with中的context可以是多个open()函数,可以都是读文件,或都是写文件,甚至读写同时存在。 以下程序同时打开文件”data_read_74.txt”和”data_write_74.txt” 然后将文件”data_read_74.txt”的数据写入到文件”data_write_74.txt”中
    with open("data_read_74.txt", "r")  as f1, open("data_write_74.txt", "w") as f2:
           list1 = []
           for line in f1:
                 list1.append(line.strip())
           f2.write("\n".join(list1))

    3. 小结 #

  • 通过关键字with来执行文件的操作,就不用再调用close()函数
  • with中的context可以是多个open()函数,可以都是读文件,或都是写文件,甚至读写同时存在。
  • OJ训练题 #

    1、【入门】排除异形基因 – ★
    2、【入门】输出奇数和偶数 – ★
    3、【入门】字母直角2 – ★
    4、【入门】找朋友 – ★★
    5、【基础】七位完全平方数 – ★★★