python3读写文件

写在前面

主要是读文件方式,写文件简单记一下

读文件

通常而言,读取文件有以下几种方式:

  • 一次性读取所有内容,使用 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值