一、从文件中读取数据
1、 读取整个文件
假定我们有一个文件pi_digits.txt
:
:::tips
3.1415926535
8979323846
2643383279
:::
以下代码可以用来读取这整个文件并将其打印:
with open('pi_digits.txt') as a:
contents = a.read()
print(contents.strip())
- open():在当前执行文件目录(仅当前层)下查找指定文件,并返回表示这个文件的对象。
- with:使python自动在不需要访问文件后将其关闭。
- read():读取整个文件内容,并存入(字符串)变量;达到文件末尾时会返回一个空字符串(打印成为空行)。
- strip():前文有提到,这里消除末尾的空行。
2、文件路径
1. 相对文件路径: 指定位置,且该位置是相对于当前运行的程序所在目录(可进入当前目录的子层)with open('text_files\opo.txt')
在程序目录下打开opo文档
2. 绝对文件路径: 即文件在计算机中的具体位置,路径一般较长,可以先存入变量中。
file_path = 'D:\opo.txt'
with open(file_path,encoding='utf-8') as a:#这里后半句是为了解决中文文档编码的问题
contents = a.read()
print(contents.strip())
输出:我爱喝营养快线!
3、逐行读取
file_path = 'pi_digits.txt'
with open(file_path) as a:
for line in a:#逐行读取
print(line.strip()) #print、文件行尾均有换行符,所以会造成隔行输出,这里用strip消除
4、创建一个包含文件各行的列表
filename = 'pi_digits.txt'
with open(filename) as a:
lines = a.readlines()
for line in lines:
print(line.rstrip())
readlines():从文件中读取每一行,并将其存储在一个列表中
5、使用文件的内容
filename = 'pi_digits.txt'
with open(filename) as a:
lines = a.readlines()
pi_string = '' #创建一个变量
for line in lines:
pi_string += line.strip() #清除空白符并把每一行都加入
print(pi_string)
print(len(pi_string))
输出:
3.141592653589793238462643383279
32
6、处理百万位的大型文件
假定 pi_million_digits.txt 存了小数点后百万位的圆周率
filename = 'pi_million_digits.txt'
with open(filename) as a:
lines = a.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string[:52]+"...")#这里输出时只输出到下标52
print(len(pi_string))
输出:
3.14159265358979323846264338327950288419716939937510...
1000002
二、写入文件
1、写入空文件
w为写入操作,若文件不存在,则自动创建;若已存在,会清空文件再写入!
注意:python只能写入文本文件,要存储数值需要先使用str()将其转化为字符串格式
filename = 'programming.txt'
with open(filename,'w',encoding='utf-8') as a:
a.write("我爱喝哇哈哈哈哈哈\n")#写入操作不会再末尾添加换行符
2、附加到文件
a为附加操作,会将数据写入到文件末尾;若指定文件不存在,会自动创建