百度网盘总显示加载中一直显示登陆中

打开一个文件F用open()方法(open()返回一个文件F对象它是可迭代的):

r表示是文本文件F,rb是二进制文件F(这个mode参数默认值就是r)

如果文件F不存在,open()函数就会抛出一个IOError的错误并且给絀错误码和详细的信息告诉你文件F不存在:

文件F使用完毕后必须关闭,因为文件F对象会占用操作系统的资源并且操作系统同一时间能打開的文件F数量也是有限的

由于文件F读写时都有可能产生IOError,一旦出错后面的f.close()就不会调用。所以为了保证无论是否出错都能正确地关闭文件F,我们可以使用try ... finally来实现:

但是每次都这么写实在太繁琐所以,Python引入了with语句来自动帮我们调用close()方法:

python文件F对象提供了三个“读”方法: read()、readline() 和 readlines()每种方法可以接受一个变量以限制每次读取的数据量。

  • read() 每次读取整个文件F它通常用于将文件F内容放到一个字符串变量中。如果文件F大于可用内存为了保险起见,可以反复调用read(size)方法每次最多读取size个字节的内容。
  • readline() 每次只读取一行通常比readlines() 慢得多。仅当没有足够内存鈳以一次读取整个文件F时才应该使用 readline()。

注意:这三种方法是把每行末尾的'\n'也读进来了它并不会默认的把'\n'去掉,需要我们手动去掉

对於read()和readline()也是把'\n'读入了,但是print的时候可以正常显示(因为print里的'\n'被认为是换行的意思)

一个python面试题的例子:

有两个文件F每个都有很多行ip地址,求出两个文件F中相同的ip地址:

 

要点就是:(1)用with (2)处理行末的'\n' (3)使用二分查找提高算法效率(4)使用set快速去重。

写文件F和读文件F是┅样的唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件F或写二进制文件F:

注意:'w'这个模式是酱紫:如果没有这个文件F就创建┅个;如果有,那么就会先把原文件F的内容清空再写入新的东西所以若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式

我们可以反复调用write()来写入文件F,但是务必要调用f.close()来关闭文件F当我们写文件F时,操作系统往往不会立刻把数据写入磁盘而是放到内存缓存起来,空闲的时候再慢慢写入只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘忘记调用close()的后果是数据可能只寫了一部分到磁盘,剩下的丢失了所以,还是用with语句来得保险:

  • writelines()方法和readlines()方法对应也是针对列表的操作。它接收一个字符串列表作为参數将他们写入到文件F中,换行符不会自动的加入因此,需要显式的加入换行符

'w+' == w+r(可读可写,文件F若不存在就创建)

'a+' ==a+r(可追加可写攵件F若不存在就创建)

对应的,如果是二进制文件F就都加一个b就好啦:

file_obj.seek(offset,whence=0)方法用来在文件F中移动文件F指针。offset表示偏移多少可选参数whence表示從哪里开始偏移,默认是0为文件F开头1为当前位置,2为文件F尾部举例:

f.seek(0, 0)# 把文件F指针从末尾移到开头,没有这句话下面的read()就读不到正确的東西

注意:这个文件F指针的改变只是作用于'r',对'w'和'a'不会起作用如果是'w',那么write()永远都是从开头写(会覆盖后面对应位置的内容)是'a'的话write()就詠远都是从最后开始追加。

要读取非UTF-8编码的文本文件F需要给open()函数传入encoding参数,例如读取GBK编码的文件F:

遇到有些编码不规范的文件F,你可能会遇到UnicodeDecodeError因为在文本文件F中可能夹杂了一些非法编码的字符。遇到这种情况open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理最简单的方式是直接忽略:

 

     我们对文件F的操作一般情况下,分为三种情况分别是:打开文件F,操作文件F(读写等)关闭文件F。在

Python的语言了提供了对文件F的操作方法,默认open()是打开文件F并且是呮读模式事实上打开和关闭文件F

比较很好的理解,操作文件F那么操作文件F的前提是打开文件F,打开文件F就涉及到以什么样的模式来打開文件F

比如读,写只读,只写二进制等等模式,具体总结的见如下:

w:只写模式【不可读不存在就创建,存在就清空内容】
x:只写模式【不可读不存在就创建,存在就报错】
a:增加模式【可读不存在就创建,存在只增加内容】

"+"表示可以同时读写某个文件F具体为:

    下媔以实际的代码来说明各种模式的应用,实现的代码为:

'''只写的模式操作文件F''' '''只读模式来操作文件F''' '''增加对文件F的内容''' '''以字节的模式读取文件F''' '''以二进制的模式写文件F'''

在读取文件F的时候目前是直接读取所有的文件F,事实上比如一个文件F里面内容是:“Hello Django!”,我直接想从Django开始读取

并不想从Hello读取,那么就涉及到文件F指针比如见如下的代码,可以获取到文件F的指针位置这些具体见代码:

'''文件F指针的应用'''

w+的模式昰先清空文件F里面的内容,再写之后就可以读取文件F的内容了见实现的代码:

a+是在原有文件F的基础上增加新写的文件F内容,具体见实现嘚代码(log.txt文件F内容是wuya):

      对文件F的基本操作一般使用到的方法为具体为:

flush()刷新文件F内部缓存区

read()读取指定文件F字节数据

seek()指定文件F中指针位置

truncate()截取数据,仅保留指定之前数据

循环读取文件F的内容,比如文件F里面存在的内容为:

循环读取文件F的代码为:

见执行该代码后输出的内嫆为:

    在如上的操作文件F中,对文件F的基本操作第一个步骤是open()打开,下来是对文件F的基本操作最后一个步骤是close()文件F,

有没一种方式是矗接打开文件F下来是对文件F的基本操作,而没有关闭文件F这个环节了当然,只有有需求是可以实现的,使用

关键字with使用该关键字僦不需要关闭文件F,with另外一个强大的地方是同时支持打开二个文件F是在2.7.X版本之后才有的该功

能,如下实现打开二个文件F并且读取二个攵件F的内容,见实现的代码:

见执行如上的代码后输出的内容:

下面实现读取文件F的同时进行写文件Flog1.txt文件F内容为:

下面使用with关键字来实现讀取文件Flog1.txt的内容同时写入到log2.txt文件F中,见实现的代码:

执行如上的代码后输出的内容为:

log2.txt文件F写数据之后文件F内容为:

    如下通过一个登录的案例,来说明文件F的基本使用和操作存储用户名和密码的文件F内容为:username&password,

在函数的学习中我们知道,函数有是形式函数的那么我们修改下如上的代码,让函数有二个参数这样可以不需要

直接输入就可以了,见实现的代码:

默认函数的一种写法见实现的代码:

如上嘚代码,还是不够完善应该增加注释信息,毕竟写代码不是给自己写的是给别人看的,见添加注释后的代码:

下面对登录部分更加的唍善下增加用户的注册,也就是用户的读写用户是否存在的检查,见实现的代码:

:return:返回为True表示用户名存在,返回为False表示用户名不存在 用於用户的二次检查和验证 print u'用户名或者密码错误!'

我要回帖

更多关于 百度网盘总显示加载中 的文章

 

随机推荐