当前位置: 首页 > ops >正文

day2today3夏暮客的Python之路

day2p3 The Hard Way to learn Python

文章目录

  • day2p3 The Hard Way to learn Python
  • 前言
  • 一、读文件
    • 1.1 open()函数
    • 1.2 file对象属性及方法
  • 二、读写文件
    • 2.1 读文件
    • 2.2 写文件

前言

author:SummerEnd

date:2025.9.3—9.4

今天真是学了不少,接下来我要学关于文件的部分操作,作者在这里主要列出了文件的读取和其他操作,是时候学习对文件的操作了。如果要以编写脚本为目的的话,对文件的操作是非常重要的,以后会需要批量的读取或改写文件。

话不多说我们开始吧

一、读文件

在读文件之前,我们需要先拥有一个可被读取的文件,来随便编写一个文本文件吧,我们先从txt文本文件入手

这是第一行
这是第二行
这个文件一共有39个字
这是第五行
你看到这里了吗
这是最后一行

然后我们编写一个读取文件的程序

from sys import argv
script, filename = argv
#获取文件名,将文件名赋予filename变量
txt = open(filename)
#将文件中的内容读取到txt变量中
print "Here is your file %r" % filename
print txt.read()
#将txt变量中的内容读取出来print "Type the file name again:"
filename_again = raw_input('>')
#再次获取文件名并赋予filename_again变量
txt_again = open(filename_again)
print txt_again.read()

这段代码已经解读的差不多了,但总感觉有哪里不兑,作者让我们自己研究研究,我打算先看一眼下一张的内容再决定我需要补充什么

我回来了,我服了这个垃圾网站了,给我跳401报错,我决定先解决无法正常访问网站的问题,正好我是学网络安全的,让我跳转到另一个文档——

我回来了,开玩笑的,现在已经将近十点了,我不打算今天解决这个问题了,当过程序员的都知道这个点修bug会是什么下场,给大家一个可用的方法——删除浏览数据,至于其原理,我也许会在后续的网络安全学习笔记中提到

让我们继续

在作者的文档中,后续并没有详细的写函数的具体使用方法

我们来自己研究

1.1 open()函数

#基础使用方法
open(file)
#完整语法格式
open(file,mode='r',buffering=-1,encoding=None,errors=None,newLine=None,closefd=Ture,opener=None)
#open()函数的返回结果是一个file对象

参数说明

参数必要性说明
file必选文件路径
mode可选打开模式
buffering可选设置缓冲
encoding可选编码格式
errors可选报错级别
newline可选区分换行符
closefd可选传入的file参数类型
opener可选设置自定义开启器,返回值必须是一个打开的文件描述符

mode参数

模式描述
t文本模式(默认)
x写模式,新建一个文件,如果已存在则会报错
b二进制模式
+打开一个文件进行更新(可读可写)
U通用换行模式
r只读方式打开文件,文件的指针将会放在文件的开头(默认)
rb以二进制格式和只读方式打开文件,文件的指针将会放在文件的开头(默认)一般用于非文本文件
r+打开一个文件用于读写,文件的指针将会放在文件的开头
rb+以二进制格式打开文件用于读写,文件的指针将会放在文件的开头,一般用于非文本文件
w打开一个文件并只用于写入,如果文件已存在则打开文件并从头开始覆盖编辑,若不存在则新建文件
wb以二进制格式打开一个文件并只用于写入,如果文件已存在则打开文件并从头开始覆盖编辑,若不存在则新建文件,一般用于非文本文件
w+打开一个文件并用于读写,如果文件已存在则打开文件并从头开始覆盖编辑,若不存在则新建文件
wb+以二进制格式打开一个文件并用于读写,如果文件已存在则打开文件并从头开始覆盖编辑,若不存在则新建文件,一般用于非文本文件
a打开一个文件并用于追加,文件的指针将会放在文件的结尾,如果文件已存在则从文件结尾开始编辑,如果文件不存在则新建文件
ab以二进制格式打开一个文件并用于追加,文件的指针将会放在文件的结尾,如果文件已存在则从文件结尾开始编辑,如果文件不存在则新建文件
a+打开一个文件并用于读写,文件的指针将会放在文件的结尾,如果文件已存在则从文件结尾开始编辑,如果文件不存在则新建文件
ab+以二进制格式打开一个文件并用于读写,文件的指针将会放在文件的结尾,如果文件已存在则从文件结尾开始编辑,如果文件不存在则新建文件
模式rr+ww+aa+
++++
+++++
创建++++
覆盖++
指针在开始++++
指针在结尾++

好多内容,仅仅是这样还没办法记住和理解,虽然大体上可以理解其作用,但实际使用起来可能有很多出乎意料的情况

1.2 file对象属性及方法

感觉已经过分臃肿了,目前我觉得我不需要详细的了解file对象的方方面面

属性描述
file.closed文件是否关闭,关闭true/未关闭false
file.mode返回文件的访问模式
file.name返回文件的名称
file.softspaceprint输出后是否必须跟空格,是false/否true
方法作用
file.close()关闭文件,关闭后不可再进行读写操作
file.read([size])从文件读取指定的字节数,未给定或为负则读取所有
file.readlines([size])从文件读取指定字节数,为给定则读取整行,包括\n
file.readlines([sizeint])从文件读取所有行并返回列表,sizeint设定一次读取多少字节
file.truncate([size])截取文件,字节通过size指定,默认当前文件位置
file.write(str)将字符串写入文件,返回写入的字符长度
file.writelines(sequence)向文件写入一个序列字符串列表
file.flush()刷新文件内部缓冲,直接把缓冲区的数据写入文件
file.fileno()返回整型文件的描述符
file.isatty()如果文件连接到终端设备返回True,否则为False
file.next()返回文件下一行
file.seek(offset[whence])设置文件当前位置
file.tell()返回文件当前位置

具体用法见Python File(文件) 方法 | 菜鸟教程

二、读写文件

2.1 读文件

我不行了,明天再写读写文件

OK我回来了,现在是9.4日晚上9:30,我刚刚终于搞懂了HTTPS和TLS握手协议,让我们继续漫漫Python之路

接下来的部分主要是编码练习,大概看了一下,主要用到了.truncate()、.write()、.close()方法,让我们看看这是个怎么回事

from sys import argv
script, filename = argv
print "Let's open the file %r" % filename
print "If you don't want to do that, hit Ctrl-c"
print "If you do want to do that, hit Enter"		raw_input("?")print "Opening the file..."
traget = open(filename, 'w')print "Truncating the file.Goodbye"
traget.truncate()

就先打到这里,我们来分析一下代码

前两行不必多说,这是在读取命令行的参数

567行为提示,提示我们按Ctrl-c可以退出程序

而“?”的输入请求实际作用是延滞程序

这里的open()函数使用w模式打开,参考上表,w模式为只写覆盖编辑模式

.truncate()函数为截取文件

运行后再次打开我们的文本文件,发现文件中的文本都消失了,我们把.truncate()函数注释掉重新试试

发现是这个文件的读取方式导致的问题,我们换一种读取模式试试

删除‘w’后会使用默认模式来打开文件,再次运行发现我们的文本文件中的内容并没有消失

但是我们不能将‘t’设置为打开方式,让我们看看报错信息

    traget = open(filename, 't')
ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not 't'

看来这些就是可以当作参数的参数,让我们看看其他几个,比如‘x’‘+’

都不行,看来他们只能当作附属参数跟在上面的参数后面,我们实验一下

ok,果然成功了

我已经寂寞到和你们说话了?

奇了怪了,那‘x’是怎么用的呢我请问了,昨天谁给我的资料,让我去拷打一下

居然是菜鸟教程?我服了,给我的东西没法用啊,不管了学下一个吧

遇到401不要慌,清除记录试试,不管了明天再学,我服了,我要开梯子,还是打不开,不管了

2.2 写文件

先从写代码开始吧

from sys import argv
script, filename = argv
print "Let's open the file %r" % filename
print "If you don't want to do that, hit Ctrl-c"
print "If you do want to do that, hit Enter"		raw_input("?")print "Opening the file..."
traget = open(filename,'w')print "Truncating the file.Goodbye"
#traget.truncate()print "Please say someting to me,I will write them down"
line1 = raw_input("line1:")
line2 = raw_input("line2:")traget.write(line1)
traget.write('\n')
traget.write(line2)
print "Now you can open your file,let me close this script"
traget.close()

上面的部分我就不看了,让我们看看下面关于写的部分

嗯,从终端读取两句话,然后输入到文件中,运行

正常运行,今天就学到这

= raw_input(“line2:”)

traget.write(line1)
traget.write(‘\n’)
traget.write(line2)
print “Now you can open your file,let me close this script”
traget.close()


上面的部分我就不看了,让我们看看下面关于写的部分嗯,从终端读取两句话,然后输入到文件中,运行正常运行,今天就学到这
http://www.xdnf.cn/news/19918.html

相关文章:

  • 「逆向思维」的胜利:从“挤不上电梯”到“高效学习”的顶级心法
  • 2025年度GEO优化公司市场研究报告:技术驱动下的用户口碑洞察
  • Git的强软硬回退(三)
  • Docmost:面向现代团队的企业级Wiki
  • 鸿蒙:状态管理V2(V2装饰器的学习)
  • 超详细教程:一招一式教你将本地项目上传至GitHub
  • 【系统架构设计(13)】项目管理上:盈亏平衡分析与进度管理
  • SpringBoot 网络流量抓包与分析系统
  • 【RNN-LSTM-GRU】第一篇 序列建模基础:理解数据的“顺序”之力
  • Mac 使用 softhsm
  • 革新光纤锁模技术:《Light: Science Applications》报道纳米腔增强型可饱和吸收器
  • 质量管理里常见的缩写QA、QC、QE都是什么意思?
  • 彻底搞懂面向对象分析(OOA)
  • Linux内存管理章节一:深入浅出Linux内存管理:从物理内存到ARM32的用户与内核空间
  • 逻辑回归基础
  • .NET GcPDF V8.2 新版本:人工智能 PDF 处理
  • Spring Boot 根据配置优雅的决定实现类
  • Meshroom 2025.1.0安装及使用参数模板介绍:二维图片转三维重建
  • 因为对象装箱拆箱导致的空指针异常
  • C#强制类型转换(显示转换)和安全类型转换
  • 野火STM32Modbus主机读取寄存器/线圈失败(三)-尝试将存贮事件的地方改成数组(非必要解决方案)(附源码)
  • VBA中类的解读及应用第二十七讲:利用类完成查找的方案-5
  • SVT-AV1 svt_aom_motion_estimation_kernel 函数分析
  • 详细学习计划
  • 百度前端社招面经
  • 云手机运行是否消耗自身流量?
  • Docker(④Shell脚本)
  • 【RNN-LSTM-GRU】第五篇 序列模型实战指南:从选型到优化与前沿探索
  • 应对反爬:使用Selenium模拟浏览器抓取12306动态旅游产品
  • 40,.Ansible角色(roles)