写在前面
主要是读文件方式,写文件简单记一下
读文件
通常而言,读取文件有以下几种方式:
- 一次性读取所有内容,使用 read() 或 readlines();
- 按字节读取,使用 read(size);
- 按行读取,使用 readline()
文件过大时用read()或readlines()读取会出现异常,但用readline()读取时间要大于前面两种;
read()和readlines()
- read()把读取到的内容赋给一个字符串变量(str),将整个读取的字节拼接成一个字符串,包括换行符、制表符
//若需要将每一行作为一个元素保存,使用splitlines()函数分离每一行
with open('file.txt','r') as f:
lines = f.read().splitlines()
- readlines()把读取到的内容赋给一个列表变量(list)文件中的每一行作为列表中的一个元素,推荐使用这种方式
//用strip()去除开头结尾的空格
l = []
with open('file.txt','r') as f:
for line in f.readlines():
line = line.strip('\n')
l.append(line)
file.open()
//open打开文件,有中文要设置编码为‘utf-8’,转成列表输出,要close()
file = open('D:/pythonScript/File.txt','r',encoding='utf-8')
def read_File(dic_file):
l_dict = []
for line in dic_file.readlines():
line = line.strip('\n')
l_dict.append(line)
return l_dict
file.close()
with open()
with open
语句可以自动调用close
方法
//1
with open('D:/pythonScript/File.txt', 'r') as f:
data = f.read()
//2
def read_File(dic_file):
l_dict = []
for line in dic_file.readlines():
line = line.strip('\n')
l_dict.append(line)
return l_dict
with open('D:/pythonScript/File.txt', 'r') as f_file:
fliter_parm = read_File(f_file)
逐行迭代读取->读取文件最佳方式
通过for
循环,文件对象f
视为一个迭代器
with open('D:/pythonScript/File.txt','r',encoding='utf-8') as f:
for l in f:
print(l)
写文件
file = .open('test.txt','w',encoding='utf-8')
file.write('Hello World!\n')
file.write('哈哈哈\n')
file.close()
实例:写入读入网页
wb
以二进制流的形式写入
requests.content
返回的是type
型,二者搭配写入
测试发现写入requests.text
会出现中文乱码
import requests
#访问baidu
res = requests.get('https://www.baidu.com')
#写入File.txt
file = open('D:/pythonScript/File.txt','wb')
file.write(res.content)
file.close()
#从File.txt读,输出到控制台
with open('D:/pythonScript/File.txt','r',encoding='utf-8') as f:
for l in f:
l = l.strip('\n')
print(l)
参考:http://funhacks.net/explore-python/File-Directory/text_file_io.html