Python学习-文件的调用-读取

 

1.文件的打开

open('filename'[,mode[,buffering]])

#这个一定要记得关文件。close.() 

filename,要以路径的形式展示,比如在"c:\"中,则要这样写: r'c:\filename'

               如果不用路径展示,那就用'filename'.其会在执行文件所在的文件夹进行搜索。

mode的格式有几种:

‘r’,  read,  读取模式;

'w’,  write,写入模式;

'a', add, 添加模式;

'+', 读/写模式;

'b', 二进制模式;注意‘rb’参数可以用来读取二进制文件;

主要使用的模式是前面三种。

buffering是缓冲,参数为,0, 1,以及大于1的数字和-1。

0,表示不用缓冲,直接读写硬盘;

1,表示启用缓冲(即内存);

大于1的数字,表示缓冲的大小(单位是字节)

-1,表示默认的缓冲大小。

 

with open('filename') as file_object:   #这种方式可以自己关文件,但是后续有关在文件运作的内容都要是在其下一级。但是赋值出来后的结果可以稳定的。


with open(r'e:\first week\username.txt','r') as f:

for i in range(2):
r_username = 'The %s username is %s'%(i,f.readline())
print(r_username)
print(r_username)

结果如下:

The 0 username is zhangyixiao

The 1 username is yingkuqi
The 1 username is yingkuqi

 

2.读

首先,打开文件后,如:

f = open('filename','r')  #使用了名为f的对象来调用,(不用好像不能调用),然后使用'r'模式(ps,可以省略,因为是默认的)

f.read(n)  # n,表示读取多少字符,如果没有n就表示把之前未读取的,全部读取出来。

f.readlines()  #这个是读取出所有行,输出的结果会是一个列表,每一行作为一个元素存储在里面。

f.readline(n) # n 表示可以读取的字符数目的最大值,从0开始,没有写表示按次序来。 如果要消除尾部的换行符'\n',可以在后面加上rstrip.()

如:

f.readline().rstrip()

$$一定要记住!这个read,readines,readline的功能中,如果之前有读取过的,它就不再读取了。包括使用readlines,read,readline进行读取的内容

 

如果想要读取特定某一行,可以利用 一个指针以及for i in range(n)的结构来实现:

password = input("Please enter your password:")


passwd = open(r'e:\first week\passwd.txt', 'r')
for l in range(2):        #l作为指针指示第几行
passwd_buffer = passwd.readline().rstrip()
if l == j: #如果l与登录用户的顺序j一致,则进入之后的判断
if password == passwd_buffer:
print("yes,%s is in!"% username)
break
else:
print("Your password is wrong!")
count += 1
with open(r'e:\first week\passwd.txt', 'r+') as file_pass:for i in range(2):print(file_pass.readline())#打开文件,赋值给内存中的一个值,然后操作,会自动关闭
with open(r'e:\first week\song.txt', 'r') as test:#print(test.read())  #读取for i in range(10):print('%i:' % i, test.readline())  # 这个形式就是反复执行几次,readline是按照行一个个执行的,之前读取过的不会再读取print('test print', test.readline())test2 = test.readlines().copy()  #全部读取,输出的结果是一个列表,之前读取过的不会再读取print(test2)#打印出文件中的每一行:for line in test2:   #这样,line代表列表中的每一个元素(就是一行),输出就是每一行的信息print(line.strip())         #strip可以取出空格和换行print('测试是否会自动关闭test', test)   #会自动关闭的
#换一个形式就可以解决之前读取过的数据不能读取的问题
#采用利用readlines,再进行浅copy,就可以方便进行各种的操作
#但是会出现一个新的变量,且不会自动关闭,这样就占用了更多的内存,可以用del来释放变量
with open(r'e:\first week\song.txt', 'r') as test0:test = test0.readlines().copy()  #把这个文件的东西作为列表复制出来# print(test.read())  #读取for i in range(10):print('%i:' % i, test[i].strip())  # 这个形式就是反复执行几次,readline是按照行一个个执行的,之前读取过的不会再读取print('test print', test)test2 = test0.readlines().copy()  # 因为之前已经读取过了,所以输出的结果空的列表print(test2)# 打印出文件中的每一行:for line in test:  # 这样,line代表列表中的每一个元素(就是一行),输出就是每一行的信息print(line.strip())  # strip可以取出空格和换行print('测试是否会自动关闭test', test)   #不会自动关闭,这样就占用了较多的内存了。但是通过del去除变量就可以释放了
del test            #但是通过del去除变量就可以释放了
#尝试使用enumerate来判定读取的是哪一行数据
with open(r'e:\first week\song.txt', 'r') as test:for index, line in enumerate(test):if index == 9:print('The 10th line is:', line)print('测试是否会自动关闭test', test)  # 但是重新利用文件的赋值方式进行赋值之后,就可以关闭。不过要尽量避免这样的情况出现。

 


3.写
简单的格式是
with open(filename,'w') as file:
file.write("contents")

在w的打开方式下,如果目录里面没有这个文件,这个文件会被创建;如果有,就会被覆盖(所以仔细考虑用'a',还是用'w')
‘a’模式下,不会覆盖,只会添加,但是这个模式不能读取的;

如果要写入多行数据,可以采用的形式是:
with open(filename,'w') as file:
file.write("contents\n")
  file.write("contents\n")


4.其他
一个break只能跳出当前的一个for循环或者while循环;

转载于:https://www.cnblogs.com/Ian-learning/p/7707135.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象...

对象字面量 JSON var obj { aaa :999};   var json{"aaa":999,“bbb”:888}; ”kay“:value 对象字面2⃣️定义方法和json很像,只有一点不同,json的key 必须加“”   ; 对象,数…

nohup命令

nohup命令 起因 ssh到机器上,然后执行某个程序,再登录发现程序早就不运行了。 原因 ssh过去之后,执行的大部分命令(守护进程不会断开),都是ssh进程的子进程,ssh断开,命令自然会中断 …

mac与phy如何实现网络自适应

这两天修改网卡驱动以实现10/100/1000M自适应,因此研究了下phy芯片和emac驱动如何兼容10/100/1000M网络环境,记录在此。 网络中设备端数据链路层由mac芯片和phy芯片组成,phy芯片根据外部网络环境完成自动协商以及配置,驱动中根据p…

asp.net(mvc) 框架

1、NFine mvcef 2、Grove orm架构 3、NHibernate orm 4、NBear 5、petshop 6、Membership 7、Brnshop 网上商城 8、cms快速开发:http://www.open-open.com/news/view/a90f1 9、c#开源框架:http://www.cnblogs.com/gaoyuchuanIT/articles/5612268.html 来…

LVM逻辑卷详解及创建

我们先来看一下这张图片:PV: 底层的一个硬盘设备,可以是一个分区,也可能是一个RAID。我们可以把这个块设备创建成一个物理卷格式,即一个PV。VG: 将一个或多个PV提供的存储空间在一个更低的单位上划分成一个个独立的存储单元&#…

python文件操作总结

python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文件:os.remove() 删除多个目…

Fread 和fwrite的参数不同,返回值不同

函数fwrite 功能C语言函数,向文件写入一个数据块 。size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);注意:这个函数以二进制形式对文件进行操作,不局限于文本文件返回值:返回实际写入的数据块数目&…

课程简介及算法分析

先学课程 -概率论 运行时间(running time) - 输入(eg 已经排序) - 输入规模(6和6*10^9) 各种各样的分析: - 最坏情况分析(worst case)usually T(n) max time when inp…

利用shell脚本添加环境变量

在shell脚本设置了环境变量,如export LIBRARY_PATH./lib/,执行了此脚本后, 在执行生成的可执行文件,提示错误 error while loading shared libraries: libww.so: cannot open shared object file: No such file or directory 但是如果把expor…

2017 ACM-ICPC西安网赛B-Coin

B-Coin Bob has a not even coin, every time he tosses the coin, the probability that the coins front face up is \frac{q}{p}(\frac{q}{p} \le \frac{1}{2})​p​​q​​(​p​​q​​≤​2​​1​​). The question is, when Bob tosses the coin kktimes, whats the pr…

Java第四次作业

Dog dognew Dog("哈士奇","黑白",2);System.out.println(dog);}}class Dog {private String name;private String color;private int age;public String getName(){return name;}public String getColor(){return color;}public int getAge(){return age;}…

ITU-RBT.656视频标准接口

601是SDTV的数据结构 656是SDTV的interface 709是HDTV的数据结构 1120是HDTV的interface ITU-R BT.601是演播室数字电视编码参数标准,而ITU-R BT.656 则是ITU-R BT.601附件A中的数字接口标准, 用于主要数字视频设备(包括芯片)之间采用27Mhzs并口或243Mb…

C语言博客作业03--函数

1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 本周学习了函数,其实,函数于之前学习的三大控制结构是密不可分的,而函数又有其特殊的地方,例如:函数的声明、函数的调用等等。我们之前编写…

Shell记录-Shell命令(其他)

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 .命令格式 top [参数]Shell2.命令功能 显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、…

Insta360:从软到硬,一年做出360°全景相机,中间填了多少坑?

摘要刘靖康在大学就开始创业。在大二的时候他曾经去腾讯实习,然后又去了“超级课程表”这个团队实习半年,2013 年 9 月回到南京创业,一开始的产品叫“名校直播”,是一款围绕院校名师讲座所做的视频直播产品。 不久前,一…

No.10 awk、变量、运算符、if多分支

awk、变量、运算符、if多分支 awk语法 ~ awk -F: {print $3,$4} /etc/passwd //-F指定:分隔符 默认以空格作为分隔符 ~ awk -F: {print &0,NF} //$0打印全部,NF有几段内容 ~ awk -F: {print $NF} /etc/passwd //$NF打印最后一段内容 ~ awk -F: {print NR} /etc/passwd…

什么是自然语言处理技术

自然语言处理(NLP)是计算机科学,人工智能,语言学关注计算机和人类(自然)语言之间的相互作用的领域。自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进…

SDOI2005 区间

题目描述 现给定n个闭区间[ai, bi]&#xff0c;1<i<n。这些区间的并可以表示为一些不相交的闭区间的并。你的任务就是在这些表示方式中找出包含最少区间的方案。你的输出应该按照区间的升序排列。这里如果说两个区间[a, b]和[c, d]是按照升序排列的&#xff0c;那么我们有…

排序: 选择排序

1. 基本原理 将待排序的元素分为已排序(初始为空)和未排序两组&#xff0c;依次将未排序的元素中值最小的元素放入已排序的组中。 直接选择排序简单直观&#xff0c;但性能略差&#xff1b;堆排序是一种较高效的选择排序方法&#xff0c;但实现起来略微复杂。 2. 直接选择排序 …

JavaScript的值传递和引用传递

原文: Explaining Value vs. Reference in Javascript译者: Fundebug为了保证可读性&#xff0c;本文采用意译而非直译。另外&#xff0c;本文版权归原作者所有&#xff0c;翻译仅用于学习。 JavaScript有5种基本的数据类型&#xff0c;分别是&#xff1a;布尔、null、undefine…