Python 学习笔记-第18讲:文件 I/O操作

本文介绍了Python中如何进行文件I/O操作,包括清除并从头写入文件、不清空内容并覆盖写入,以及使用Python爬虫保存数据到文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、控制台输入/输出
input()
相当于:
print(‘提示内容’ end='')
sys.stdin.readline()[:-1] # -1 to discard the '\n' in input stream
print()
相当于:
sys.stdout.write()

可以使用 str.format() 函数来格式化输出值
可以使用 repr() 或 str() 函数将输出的值转成字符串

二、文件 I/O
1. 打开文件
使用 open() 函数打开文件并返回一个 file 文件对象。
语法:
open(name[, mode[, buffering]])

打开模式:
基本模式:
r:只读
w:只写
a:追加
rb/wb/ab:表示以二进制格式操作文件
r+:读写,从头覆盖写入,不清空文件内容,文件不存在时报错
w+:读写,清空文件,然后写入,文件不存在时创建该文件

with open('foo.txt','w+') as f:
    for i in range(1,10):
        f.write('line {0}: Python 是一门非常好的语言。\n'.format(i))
        # f.write('line {0}: Python 语言。\n'.format(i))

foo.txt: 文件原有内容被清除,并从文件头开始写入。

line 1: Python 是一门非常好的语言。
line 2: Python 是一门非常好的语言。
line 3: Python 是一门非常好的语言。
line 4: Python 是一门非常好的语言。
line 5: Python 是一门非常好的语言。
line 6: Python 是一门非常好的语言。
line 7: Python 是一门非常好的语言。
line 8: Python 是一门非常好的语言。
line 9: Python 是一门非常好的语言。

r+

with open('foo.txt','r+') as f:
    for i in range(1,10):
        # f.write('line {0}: Python 是一门非常好的语言。\n'.format(i))
        f.write('line {0}: Python 语言。\n'.format(i))

foo.txt: 不清空文件原有内容,并从文件头开始覆盖写入。

line 1: Python 语言。
line 2: Python 语言。
line 3: Python 语言。
line 4: Python 语言。
line 5: Python 语言。
line 6: Python 语言。
line 7: Python 语言。
line 8: Python 语言。
line 9: Python 语言。
浅:玫挠镅浴�
line 7: Python 是一门非常好的语言。
line 8: Python 是一门非常好的语言。
line 9: Python 是一门非常好的语言。

2. file 对象方法
file.read([size]) size未指定则返回整个文件,如果文件大小>2倍内存则有问题.f.read()读到文件尾时返回""(空字串)

file.readline() 返回一行

file.readlines([size]) 返回包含size行的列表,size 未指定则返回全部行

for line in f: print line #通过迭代器访问

f.write("hello\n") #如果要写入字符串以外的数据,先将他转换为字符串.

f.tell() 返回一个整数,表示当前文件指针的位置(就是到文件头的比特数).

f.seek(偏移量,[起始位置]) 用来移动文件指针.

偏移量:单位:比特,可正可负
起始位置:0-文件头,默认值;1-当前位置;2-文件尾
f.close() 关闭文件

3. pickle 模块
通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储。
通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
语法:
pickle.dump(obj, file, [,protocol])
x = pickle.load(file)

应用示例:

保存网站爬虫数据到文件:

from urllib import request

response=request.urlopen('http://www.baidu.com/')
with open('baidu.txt','w') as f:
    f.write(str(response.read()))


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值