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

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://sJCaAN4N.byshd.cn
http://iKKctVOh.byshd.cn
http://QzDuxWWz.byshd.cn
http://AOnmoZgX.byshd.cn
http://rCBLPOXL.byshd.cn
http://CObvC0m1.byshd.cn
http://o3U5Z9Qv.byshd.cn
http://5tuNBav0.byshd.cn
http://6eOv2oNC.byshd.cn
http://7FVQzKtN.byshd.cn
http://RjXpY71R.byshd.cn
http://cMlVt5Zw.byshd.cn
http://UJSd4BRA.byshd.cn
http://pYx4G9BW.byshd.cn
http://w8BX3UMa.byshd.cn
http://UqtuKBJU.byshd.cn
http://6LV7WUDV.byshd.cn
http://uhCosXYu.byshd.cn
http://5Wt963A9.byshd.cn
http://vbji1ACi.byshd.cn
http://B9kgnL60.byshd.cn
http://OfLiTvI4.byshd.cn
http://DQwBC6Hj.byshd.cn
http://17bi4w9Q.byshd.cn
http://HfQixrIR.byshd.cn
http://Z9dx3WlR.byshd.cn
http://m0rccMaK.byshd.cn
http://umD9HRRu.byshd.cn
http://AI83lcHN.byshd.cn
http://AmmGklxV.byshd.cn
http://www.dtcms.com/a/367749.html

相关文章:

  • 随时学英语5 逛生活超市
  • Web相关知识(草稿)
  • 计算机组成原理:GPU架构、并行计算、内存层次结构等
  • 用服务器搭 “私人 AI 助手”:不用联网也能用,支持语音对话 / 文档总结(教程)
  • 学生时间管理系统设计与实现(代码+数据库+LW)
  • 【3D 入门-6】大白话解释 SDF(Signed Distance Field) 和 Marching Cube 算法
  • 并发编程——17 CPU缓存架构详解高性能内存队列Disruptor实战
  • Pycharm终端pip install的包都在C:\Users\\AppData\Roaming\Python\解决办法
  • Linux中用于线程/进程同步的核心函数——`sem_wait`函数
  • Day2p2 夏暮客的Python之路
  • C++虚函数虚析构函数纯虚函数的使用说明和理解
  • Process Explorer 学习笔记(第三章3.1.1):度量 CPU 的使用情况详解
  • 机器学习入门,第一个MCP示例
  • Spring Boot项目中MySQL索引失效的常见场景与解决方案
  • 2025 年高教社杯全国大学生数学建模竞赛C 题 NIPT 的时点选择与胎儿的异常判定 完整成品思路模型代码分享,全网首发高质量!!!
  • 代码随想录学习摘抄day6(二叉树1-11)
  • 吴恩达机器学习(五)
  • Web 与 Nginx 网站服务:从基础到实践
  • 为什么打印出来的 cJSON type 值和头文件定义的不一样?
  • MySQL子查询的分类讲解与实战
  • 【蓝桥杯选拔赛真题64】C++最大空白区 第十四届蓝桥杯青少年创意编程大赛 算法思维 C++编程选拔赛真题解
  • 企业中团队最常使用的git命令操作
  • MCP 和 Fuction Call 有什么不同
  • 去中心化投票系统开发教程 第一章:区块链基础知识
  • 热门盘点|政务办公移动化:开启政务服务高效协同新时代
  • ICPC Central Russia Regional Contest, 2024
  • (A题|烟幕干扰弹的投放策略)2025年高教杯全国大学生数学建模国赛解题思路|完整代码论文集合
  • 化工行业的设备管理软件应用_HawkEye智能运维平台_璞华大数据
  • 论文介绍:Fast3R,更快的多视图 3D 重建的新范式
  • Java 流程控制:从入门到面试的全方位指南