文件
和其他语言一样,Python 的文件操作很像Unix。有些函数的名字相同,比如chown() 和
chmod(),不过也有很多新函数。
10.1.1 用open()创建文件
8.1 节介绍了如何使用open() 函数来打开文件或者创建文件。下面来创建一个名为oops.txt
的文本文件:
>>> fout = open('oops.txt', 'wt')
>>> print('Oops, I created a file.', file=fout)
>>> fout.close()
用exists()检查文件是否存在
要判断文件或者目录是否存在,可以使用exists(),传入相对或者绝对路径名,如下所示:
>>> import os
>>> os.path.exists('oops.txt')
True
>>> os.path.exists('./oops.txt')
True
>>> os.path.exists('waffles')
False
>>> os.path.exists('.')
True
>>> os.path.exists('..')
True
不光可以用来判断文件,还可以判断文件夹,所以最后2个例子里面也是返回True, ‘.’表示当前文件夹,'..'表示上层文件夹。
用isfile()检查是否为文件
本节中的函数可以检查一个名称是文件、目录还是符号链接(详情见下方的例子)。
我们要学习的第一个函数是isfile,它只回答一个问题:这个是不是文件?
>>> name = 'oops.txt'
>>> os.path.isfile(name)
True
下面是判断目录的方法:
>>> os.path.isdir(name)
False
一个点号(.)表示当前目录,两个点号(..)表示上层目录。它们一直存在,所以下面
的语句总会返回True:
>>> os.path.isdir('.')
True
os 模块中有许多处理路径名(完整的文件名,由/ 开始并包含所有上级目录)的函数。其
中之一是isabs(),可以判断参数是否是一个绝对路径名。参数不需要是一个真正的文件:
>>> os.path.isabs(name)
False
>>> os.path.isabs('/big/fake/name')
True
>>> os.path.isabs('big/fake/name/without/a/leading/slash')
False
os 模块中有许多处理路径名(完整的文件名,由/ 开始并包含所有上级目录)的函数。其
中之一是isabs(),可以判断参数是否是一个绝对路径名。参数不需要是一个真正的文件:
>>> os.path.isabs(name)
False
>>> os.path.isabs('/big/fake/name')
True
>>> os.path.isabs('big/fake/name/without/a/leading/slash')
False
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用copy()复制文件
copy() 函数来自于另一个模块shutil。下面的例子会把文件oops.txt 复制到文件ohno.txt:
>>> import shutil
>>> shutil.copy('oops.txt', 'ohno.txt')
shutil.move() 函数会复制一个文件并删除原始文件
用rename()重命名文件
这个函数的作用看名字就知道了。下面的例子会把ohno.txt 文件重命名为ohwell.txt 文件:
>>> import os
>>> os.rename('ohno.txt', 'ohwell.txt')
测试了一下,改不同的后缀名也是可以的
用abspath()获取路径名
这个函数会把一个相对路径名扩展成绝对路径名。如果你的当前目录是/usr/gabenlunzie,
其中有文件oops.txt,那你可以用这个函数得到下面的输出:
>>> os.path.abspath('oops.txt')
'/usr/gaberlunzie/oops.txt'
用remove()删除文件
下面的例子使用remove() 函数来删除oops.txt 文件:
>>> os.remove('oops.txt')
>>> os.path.exists('oops.txt')
False