[关闭]
@myles 2018-03-31T14:10:18.000000Z 字数 1391 阅读 688

文件的读取(I/O)

未分类


1. open 内建函数

open('路径','模式',encoding='utf8')

  1. >>> f = open('c:/path/tmp.txt','r')
  2. # 使用内建函数 open 以只读的方式打开文件'c:/path/tmp.txt',以此来创建一个文件对象,并赋值给变量f。
  1. 'c:\\path\\tmp.txt' # 添加一个转义'\'还原 '\';
  2. r'c:\path\tmp.txt' # r 代表原生字符串
  3. 'c:/path/tmp.txt' # 直接将'\'改写为 '/'

文件对象的声明比较特殊的。

2. 文件对象操作方法:

  1. read() #读取全文
  2. readline() #读取一行
  3. readlines() #逐行读取,并返回一个以每行为一个数据的列表(list)
  4. seek(0) #内部指针移动
  5. close() #关闭文件对象
  6. for line in f: #循环遍历,文件对象是一个可迭代的对象。
读取:
  1. read(N)
  2. readlines()

注:io.TextIOWrapper是可以迭代的。

  1. for line in f: #遍历迭代
  2. print(line,end = '')

3. 上下文管理样式

with open() as f: 此种样式创建一个可操作的文件对象,为最常用方法需要牢记。最关键的是这个样式写完后,f文件对象会自动进行关闭保存。

  1. with open('name','r',encoding = 'utf8') as f:
  2. f.write('Hello,world !!!\n')
  3. f.write('优品课堂\n')
  4. 自动进行f.close()操作。

4. 下载图片并存储到本地

现在使用requests模块进行图片下载,并将图片这个二进制文件直接存在到本地。我们来结合使用 ‘文件对象读写的方式来完成’。

  1. # coding=utf-8
  2. import requests
  3. # (1) 第一步:下载图片
  4. url = 'http://img0.dili360.com/rw8/ga/M02/48/ED/wKgBzFm_aNeAHDBhAAJdKZcnyvQ209.jpg'
  5. headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'}
  6. r = requests.get(url,headers=headers)
  7. print("下载状态码 >>> {}".format(r.status_code))
  8. # (2) 第二步:保存在下载对象r.content二进制内容到本地1.jpg
  9. try:
  10. with open('d:/tmp/1.jgp','wb') as f:
  11. f.write(r.content)
  12. print("保存图片成功...")
  13. except:
  14. print('保存图片出错了...')

报错分析:

  1. C:\Python27\python.exe D:/Requests/file的读与写/下载图片并存储到本地.py
  2. 下载状态码 >>> 200
  3. 保存图片出错了...
  4. Process finished with exit code 0

报错原因是因为:我将图片保存到D:/根目录下,当前脚本没有权限。当我将图片保存路径改为d:/tmp/问题就解决了。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注