python 笔记 函数和文件(seek和readline)《笨办法学Python》习题20 ——12.28

这篇个人学习笔记详细记录了在《笨办法学Python》中关于习题20的函数和文件操作,包括使用`seek`和`readline`函数进行文件定位与读取的实践,通过编写ex20.py和ex20_1.py两个示例程序,展示了具体的应用场景和运行结果。
部署运行你感兴趣的模型镜像

习题 20:  函数和文件

ex20.py

#-*-coding:utf-8-*-
'''
此章学习看题目就知道,是将函数和文件的调用读写结合
从运行结果来看,首先是打印test.txt文件
之后分3次将文件的3行内容分别打印出来
也就是说,不出意外的话脚本调用了4次打印
'''
 
 
from sys import argv
 
script, input_file = argv
 
#定义一个名为print_all的函数
#参数为f(f可为任意字母数字加字符),打印出其的内容
def print_all(f):
	print f.read()
#此处引申一个内建函数seek(offset,whence=0)
#Python文件的seek()方法将文件的当前位置设置为偏移量(offset)。
#offset:开始的偏移量,也就是代表需要移动偏移的字节数
#whence:给offset参数一个定义,表示要从哪个位置开始偏移;
#默认为0,0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
#所以seek(0)就是转到开头?
def rewind(f):
	f.seek(0)
 
 
#readline() 方法用于从文件读取整行,包括 "\n" 字符。
#如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。    
def print_a_line(line_count,f):
	print line_count, f.readline()
#此处开始使用函数,首先打开文件
current_file = open(input_file)
 
#打印文本并在完毕后空行
print"First let's print the whole file:\n"
 
#调用print_all函数,打印打开的文件内容
print_all(current_file)
 
#打印文本
print "Now let's rewind, kind of like a tape."
 
#转至开头字节
rewind(current_file)
 
print"Let's print three lines:"
 
#此处就是readline()的用法了
#函数print_a_line定义了2个参数,第一个为行数,第二个则为读取整行
current_line = 1
print_a_line(current_line, current_file)
 
#重新定义了行数current_line,并进行打印
current_line = current_line + 1
print_a_line(current_line, current_file)
 
#由于current_line是一个变量,所以再定义后再进行计算则得到一个新值
current_line = current_line + 1
print_a_line(current_line, current_file)
 

#总结:在得知输出结果和内置函数的意义后看似能够明白其代码,但是只是通过结果去解析其过程,并不是理解!稍后进行实验。

运行结果:



自我练习

ex20_1.py

#-*-coding:utf-8-*-
from sys import argv
 
script, input_file = argv
 
def print_all(f):
	print f.read()
def rewind(f):
	f.seek(0)
def print_a_line(line_count,f):
	print line_count, f.readline()
 
def print_a_line_of_some(line_count,f):
	print line_count, f.readline(6)
def print_a_line_of_some_test(f):
	print  f.readline(6)
 
 
current_file = open(input_file)
print "Start!!!\n"
print "print all:"
#正式开始,前面都是定义
#首先得打开文件
 
 
#如果rewind(current_file)在这则无法打印当前行数,让我很奇怪
print_all(current_file)
 
rewind(current_file)
 
print "The 3 lines!"
 
'''经过证明:
def print_a_line(line_count,f):
	print line_count, f.readline()
 
line_count仅仅是数字,用于显示,并无法改变其具体显示第几行
readline每次仅仅读取一行
 
readline()括号中可加参数(数字),不加为读取一行,加了够则代表每次读取几个字符。
 
并且可以发现,readline()是依次读取的
 
'''
current_line = 1
print_a_line(1, current_file)
 
print_a_line(current_line*3, current_file)
 
print_a_line(3, current_file)
 
print "Now,6 character to be one line\n"
print_a_line_of_some(1, current_file)
print_a_line_of_some(current_line*3, current_file)
print_a_line_of_some_test(current_file)

运行结果:


您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值