Python基础之文件操作

  • 学习目录
  • 文件操作步骤
  • 读文件
  • 写文件
  • 文件模式
  • 文件方法
  • open方法
  • with方法
  • for结合相关方法操作
  • 字符编码

0x01 文件操作步骤

  • 打开文件
  • 写入文件内容
  • 关闭文件
  • Example: 打开文件步骤
# 打开文件(首先,文件需要存在)  
f = open("file.txt", 'w').read()

# 写入文件  
f.write('Hello Python')

# 关闭文件  
f.close()
  • Example: 追加文件
# 追加写入文件(在文件尾写入)
f = open("file.txt", "a", encoding="utf-8")
f.write("Hello Python\n飞上天去?\n我们都不一样\n")
f.close()
  • Example: 全局申明
ENCODEING = "utf -8"

0x02 文件读操作

  • 语法格式
  • 格式
file = open('filename', 'mode', encoding)

PS:

  • filename: 文件名称或全路径文件
  • mode: 读取文件模式
  • encoding:文件编码格式
  • Example: 打开文件
f = open('file.txt', 'r', encoding='utf8')               # 确保file.txt文件内有内容   
print(f.read())
f.close()

0x03 文件写操作

  • 语法格式
  • 格式
file.write('string')
  • Example: 写文件
f = open('file.txt', 'w', encoding='utf8')               # 确保file.txt文件内有内容
f.write('你好?\nHello Python.\n')
f.close()

0x04 文件模式

  • 常规文件模式
  • 读写文件模式
  • 二进制文件模式
  • 常规文件模式
r     # 只读模式(默认模式,文件必须存在,不存在则抛出异常)
w     # 只写模式(不可读;不存在则创建;存在则清空内容)
x     # 只写模式(不可读;不存在则创建,存在则报错)
a     # 追加模式(可读;   不存在则创建;存在则只追加内容)
  • 读写文件模式
r+    # 读写
w+    # 写读
x+    # 写读
a+    # 追加读写

PS:

  • 均可读,可写
  • 二进制文件模式
rb    # 读二进制文件
wb    # 写二进制文件
xb    # 读写二进制文件 
ab    # 追加二进制文件 

0x05 文件方法

  • 方法
f.closed()     # 判断文件关闭,打开提示False,关闭提示True
f.flush()      # 修改内容,强制刷新到文件中
f.isatty       # 判断是否为终端文件
f.mode         # 查看文件的打开模式
f.name         # 文件名称
f.next         # 迭代方法。与readline像,区别,next读到末尾会报错,readline会继续返回null
f.read         # 读取文件内容,以字符串形式输出
f.readable()   # 判断文件是否可读
f.readline()   # 每次读取一行内容
f.readlines()    # 读取所有内容,以列表方式存取(适合操作小文件)
f.seek(0)      # 调整读取文件指针位置
f.seekable()   # 判断文件可以调整指针位置(tty,磁盘等文件是不能被seek的),可以返回True,否则返回False  --> Py3
f.tell()       # 查询文件当前读取位置(以字符为单位)
f.truncate()   # 截取文件,从头开始截取,不指定指针位置,会清空文件
f.write()      # 把内容写入至文件中
f.writelines() # 把字符串列表写入文件中
f.xreadlines() # 读一行打印一行,针对大文件非常适用 -----> Py2适用,Py3取消
f.encoding()   # 查看文件编码
f.writeable()  # 判断文件是否可以写
f.fileno()     # 返回文件在操作系统的文件描述符(默认会为:0 --> stdin、1 --> stdout,2 --> stderr)

0x06 open()方法

  • 用法
  • 语法
  • 用法
    * 打开文件,创建文件对象,与相关方法结合进行读写操作
  • 语法
file object = open(file_name [, access_mode][, buffering])

PS:

  • file_name # 文件名称
  • access_mode # 文件模式,默认为:r
  • buffering # 寄存区的缓冲大小。 0不会寄存,1访问文件时会寄存行
  • Example: 打印诗歌
f = open('file.txt', 'r', encoding='utf8').read()         # 确保file.txt文件存在却包含内容
print(f)

0x07 with方法

  • 特点
  • 语法
  • 特点
    * 节省每次都需要f.close(),文件用完后自动关闭
  • 语法
# 单个文件   
with open('file_name','access_mode') as obj1:
    pass

# 多个文件
with open('file_name','access_mode') as obj1, with open('file_name','access_mode') as obj2:
    pass

0x08 for结合相关方法操作文件

  • with结合for循环打印单个文件
  • with结合for循环打印多个文件
  • Example: with结合for循环打印单个文件
with open('file.txt', 'r', encoding='utf-8') as f:
    for i in f:
        print(i)
  • Example: 双层循环打印多个文件
with open('file.txt', 'r', encoding='utf-8') as f1, \
      open('files', 'r', encoding='utf-8') as f2:
    for x in f1:
        for y in f2:
            print(y)
        print(x)
  • Example: with()结合codecs模块使用
import codecs

# 写入操作
with codecs.open("file.txt", 'w') as f:
    f.write("Hello World\n大家好,才是真的好\n")

# 读取操作
with codecs.open("file.txt", 'r', encoding="utf-8") as f:
    print(f.read)

0x09 字符编码

  • 什么是编码?
  • 常见编码?
  • 特点
  • 什么是编码?
    * 从明文到编码文本的转换称为"编码",从编码文本又转回成明文则为"解码"
  • 常见编码?
    * ASCII
    * GBK
    * Unicode
    * utf-8
  • 特点
    * py2默认ASCII
    * py3默认utf-8
    * unicode分:
    ---> utf-32(占4个字节)
    ---> utf-16(占两个字节)
    ---> utf-8(占1-4个字节)utf-8即unicode编码
    * 在py3内:
    ---> encode转码的同时会把string变成bytes类型
    ---> decode解码的同时会把bytes变回string

0x10 示例整理

  • 打印单个文件内容
  • with结合for打印单个文件
  • 修改文件内容,replace()方法
  • Example: readline()一次读取一行
f = open('file.txt', 'r', encoding='utf-8')
print(f.readline())
print(f.readline())
print(f.readline())
  • Example: readlines()读取一个文件列表(迭代方式)
f = open('file.txt', 'r', encoding='utf-8')
print(f.readlines())
  • Example: readlines()结合for使用
f = open('file.txt', 'r', encoding='utf-8')
for i in f.readlines():
    print(i)
  • Example: 结合enumerate()打印行号
f = open('file.txt', 'r', encoding='utf-8')
for i, j in enumerate(f.readlines()):
    print("第 {0} 行内容为: {1}".format(i, j))
  • Example: 打印单个文件内容
f1 = open("file.txt", "r", encoding="utf-8")
for line in f1:
    print(line)
  • Example: with结合for打印单个文件
with open("file.txt", "r", encoding="utf-8") as f1:
    for line in f1:
        print(line)
  • Example: 修改文件内容replace()
f1 = open("file.txt", "r", encoding="utf-8")   
f2 = open("files", "w", encoding="utf-8")    
name1 = 'Robin'
name2 = 'Robin.Chow'
for i in f1:
    if name1 in i:
        i = i.replace(name1, name2)
    f2.write(i)
f1.close()
f2.close()
posted @ 2018-04-13 00:49  Mr.Chow  阅读(276)  评论(0编辑  收藏  举报