文件与目录操作

2019-01-15  本文已影响0人  __深蓝__
  • 文件,就是存储在某种长期储存设备上的一段数据,长期存储设备包括:硬盘、U 盘、移动硬盘、光盘等
  • 在计算机中,文件是以二进制的方式保存在磁盘上的
  • 文本文件,可以使用文本编辑软件查看,本质上还是二进制文件,例如,python的源程序
  • 二进制文件,保存的内容不是给人直接阅读的,而是提供给其他软件使用的,例如,图片文件、音频文件、视频文件等,二进制文件不能使用文本编辑软件查看
文件操作

在计算机中操作文件通常使用三个步骤:

  • 打开文件
  • 处理文件
  • 关闭文件
方法 功能
open(file, mode='r') 获得文件对象,通过文件对象操作文件
fileObject.read([size]) 从文件中读取size个字节的数据,默认读取所有数据
fileObject.write(str) 字符串写入文件,返回实际写入的字符个数
fileObject.close() 将数据写入磁盘,并释放资源
fileObject.flush() 直接把内部缓冲区的数据立刻写入文件

open方法默认以只读方式打开文件,并且返回文件对象
改变打开方式,使用f = open("文件名", "打开方式")

打开方式 功能 若文件不存在 是否覆盖
r 只能读 报错 -
r+ 可读可写 报错
w 只能写 创建文件
w+ 可读可写 创建文件
a 只能写 创建文件 否,追加写
a+ 可读可写 创建文件 否,追加写
  • read() 方法一次性读入所有的文件数据
  • read(size) 方法读入size个字节的数据
file = open("readme.txt")
text = file.read()
print(text)
file.close() 
  • readline方法可以一次读取一行内容
  • 方法执行后,会把文件指针移动到下一行,准备再次读取
file = open("readme.txt")
while True:
    text = file.readline()  # 读取一行内容
    if not text:  # 判断是否读到内容
        break   
    print(text, end="")  # 每读取一行的末尾已经有了一个 `\n`
file.close()
  • read()一次性读取最方便
  • 如果不能确定文件大小,反复调用read(size)比较保险
  • 如果是配置文件,调用readlines()最方便
  • write方法用于向文件中写入指定字符串
  • 在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。
  • 如果打开方式带b,字符串要用encode方法转为bytes形式,否则报错:TypeError: a bytes-like object is required, not 'str'
f = open("readme.txt", "w")
f.write("hello python!\n")
f.write("今天天气真好")
f.close()
实例演示:文件复制
file_read = open("source.txt")
file_write = open("target.txt", "w")

text = file_read.read()
file_write.write(text)

file_write.close()
file_read.close()
file_read = open("source.txt")
file_write = open("target.txt", "w")

while True:
    text = file_read.readline()  # 如果是二进制文件,建议使用read(size)方法
    if not text:
        break
    file_write.write(text)

file_write.close()
file_read.close()
文件操作中的异常处理

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

try:
    f = open('/path/to/file', 'r')  # 当open出现异常时,f 不会被创建
    print(f.read())
finally:
    if f:
        f.close()

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

with open('/path/to/file', 'r') as f:
    print(f.read())

这和try ... finally相同,但代码更简洁,并且不必调用f.close()方法

文件/目录的常用管理操作
  • 终端中通过使命可以完成创建文件、文件重命名、删除文件、改变路径、查看目录内容等操作
  • 同样,在Python中通过程序也可以实现上述功能,但需要导入os模块
import os
print(os.name)
nt

posix代表Linux、Unix、Mac OS X系统,nt代表Windows系统

方法名 说明 示例
rename 重命名文件 os.rename(源文件名, 目标文件名)
remove 删除文件 os.remove(文件名)
方法名 说明 示例
listdir 目录列表 os.listdir(目录名)
mkdir 创建目录 os.mkdir(目录名)
rmdir 删除目录 os.rmdir(目录名)
getcwd 获取当前目录 os.getcwd()
chdir 修改工作目录 os.chdir(目标目录)
path.isdir 判断是否是文件 os.path.isdir(文件路径)




- end -

上一篇 下一篇

猜你喜欢

热点阅读