一、从文件中读取数据

1、 读取整个文件

假定我们有一个文件pi_digits.txt : :::tips 3.1415926535
8979323846
2643383279 :::

以下代码可以用来读取这整个文件并将其打印:

  1. with open('pi_digits.txt') as a:
  2. contents = a.read()
  3. print(contents.strip())
  1. open():在当前执行文件目录(仅当前层)下查找指定文件,并返回表示这个文件的对象。
  2. with:使python自动在不需要访问文件后将其关闭。
  3. read():读取整个文件内容,并存入(字符串)变量;达到文件末尾时会返回一个空字符串(打印成为空行)。
  4. strip():前文有提到,这里消除末尾的空行。

2、文件路径

1. 相对文件路径: 指定位置,且该位置是相对于当前运行的程序所在目录(可进入当前目录的子层)
with open('text_files\opo.txt') 在程序目录下打开opo文档

2. 绝对文件路径: 即文件在计算机中的具体位置,路径一般较长,可以先存入变量中。

  1. file_path = 'D:\opo.txt'
  2. with open(file_path,encoding='utf-8') as a:#这里后半句是为了解决中文文档编码的问题
  3. contents = a.read()
  4. print(contents.strip())
  5. 输出:我爱喝营养快线!

3、逐行读取

  1. file_path = 'pi_digits.txt'
  2. with open(file_path) as a:
  3. for line in a:#逐行读取
  4. print(line.strip()) #print、文件行尾均有换行符,所以会造成隔行输出,这里用strip消除

4、创建一个包含文件各行的列表

  1. filename = 'pi_digits.txt'
  2. with open(filename) as a:
  3. lines = a.readlines()
  4. for line in lines:
  5. print(line.rstrip())

readlines():从文件中读取每一行,并将其存储在一个列表中

5、使用文件的内容

  1. filename = 'pi_digits.txt'
  2. with open(filename) as a:
  3. lines = a.readlines()
  4. pi_string = '' #创建一个变量
  5. for line in lines:
  6. pi_string += line.strip() #清除空白符并把每一行都加入
  7. print(pi_string)
  8. print(len(pi_string))
  9. 输出:
  10. 3.141592653589793238462643383279
  11. 32

6、处理百万位的大型文件

假定 pi_million_digits.txt 存了小数点后百万位的圆周率

  1. filename = 'pi_million_digits.txt'
  2. with open(filename) as a:
  3. lines = a.readlines()
  4. pi_string = ''
  5. for line in lines:
  6. pi_string += line.strip()
  7. print(pi_string[:52]+"...")#这里输出时只输出到下标52
  8. print(len(pi_string))
  9. 输出:
  10. 3.14159265358979323846264338327950288419716939937510...
  11. 1000002

二、写入文件

1、写入空文件

w为写入操作,若文件不存在,则自动创建;若已存在,会清空文件再写入!
注意:python只能写入文本文件,要存储数值需要先使用str()将其转化为字符串格式

  1. filename = 'programming.txt'
  2. with open(filename,'w',encoding='utf-8') as a:
  3. a.write("我爱喝哇哈哈哈哈哈\n")#写入操作不会再末尾添加换行符

2、附加到文件

a为附加操作,会将数据写入到文件末尾;若指定文件不存在,会自动创建