python-文件读写

在python中可以使用file模块和opne可以打开文件,注意python3中已经不支持file!

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)    ========= ===============================================================
    Character Meaning    --------- ---------------------------------------------------------------    'r'       open for reading (default)  #只读模式打开    'w'       open for writing, truncating the file first   #只写模式打开,写入清先清空文件    'x'       create a new file and open it for writing     #创建一个新文件写    'a'       open for writing, appending to the end of the file if it exists  #追加写的方式    'b'       binary mode   #以二进制模式打开    't'       text mode (default)    #默认以文本模式打开    '+'       open a disk file for updating (reading and writing)  #    'U'       universal newline mode (deprecated)    ========= ===============================================================

通过实例来测试open的用法

fd = open(r"E:\file", "w")  #以写的方式打开一个文件fd.write("Hello world!")     #写入一条数据Out[22]: 12fd.close()

fd = open(r"E:\file")           #默认是以只读的方式打开文件fd.read()                             ##Out[26]: 'Hello world!'#write与read的进阶fd.readlines()  #返回的是文件中每一行构成的列表fd.readline()    #每次返回一行,可以用来迭代In [5]: fd = open("/etc/passwd")

In [6]: fd.readlines()
Out[6]: 
['root:x:0:0:root:/root:/bin/bash\n', 'bin:x:1:1:bin:/bin:/sbin/nologin\n', 'daemon:x:2:2:daemon:/sbin:/sbin/nologin\n', 'adm:x:3:4:adm:/var/adm:/sbin/nologin\n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n', 'sync:x:5:0:sync:/sbin:/bin/sync\n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n', 'halt:x:7:0:halt:/sbin:/sbin/halt\n', 'sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin\n']

In [7]: fd.seek(0)   ##把文件句柄指针指向文件起始位置In [8]: fd.readline()  #只读一行Out[8]: 'root:x:0:0:root:/root:/bin/bash\n'#遍历整个文件之一:In [12]: for i in fd:    
   ....:     print i#遍历整个文件之二:In [14]: fd = open("/etc/passwd")

In [15]: while True:
   ....:     line = fd.readline()
   ....:     if not line:
   ....:         break
   ....:     print(line)
   ....: fd.close()#writelines()的用法In [16]: fd = open("message")

In [17]: lines = fd.readlines()

In [18]: fd.close()

In [19]: fd = open("message","w")

In [20]: lines
Out[20]: ['Hello world!\n', 'I have a dream\n', 'Dangerous\n']

In [21]: lines.append("Swift\n")  #在列表中追加一个字符串In [22]: fd.writelines(lines)     #写入列表In [24]: fd.close()

In [31]: fd = open("message")

In [32]: print fd.read()   
Hello world!
I have a dream
Dangerous
Swift

以上默认是使用文本方式打开,在打开文件时使用“b”表示使用二进制的方式打开。

In [33]: fd = open("message")

In [34]: fd.read()      #默认是读取整个文件Out[34]: 'Hello world!\nI have a dream\nDangerous\nSwift\n'In [35]: fd.tell()      #函数打印出当前指针的位置Out[35]: 44In [36]: fd.seek(0)     #函数可以把句柄指针指向指定的位置In [37]: fd.read(5)      #可以传入参数,打印多少个字节Out[37]: 'Hello'

python2与python3的编码格式:

python2中默认使用ASCII编码,python3中使用UNICODE编码。

string------>bytes(encode(encoding="utf-8")) :unicode转为二进制称为编码

bytes------->string(decode(encoding="utf-8")): 二进制转为Unicode称为解码

注意以上只适合于python3

一个关于编码问题的详细解答链接:https://www.cnblogs.com/575dsj/p/7112767.html

 

上一篇:08 批量检查网站是否异常


下一篇:从0开始学习shell--tr工具的使用