Python笔记--文件和目录

路径:

反斜杠在Python字符串中是一个特殊字符,因此必须对路径中的反斜杠进行转义。

路径“C:\Windows\Temp”要用"C:\\Windows\\Temp"代替。

 

创建文本文件,w写文件,如果没有该文件会创建新文件。如果文件中已有内容会被清空。

def make_text_file():
    a = open('test.txt', 'w')
    a.write("This is how you create a text file")
    a.close()

向文件中追加文本,a追加文本,要求文件已存在,并且不会清空文件中已有内容。

def add_some_text():
    a = open('test.txt', 'a')
    a.write("Here is some addtional text")  # 注:write不会自动换行
    a.close()

添加多行文本

def even_more_text():
    a = open('test.txt', 'a')
    a.write("""
    here
    is
    more
    text
    """)
    a.close()

读文本文件

def print_line_lengths():
    a = open('test.txt', 'r')
    text = a.readlines()
    for line in text:
        print(len(line))

文件异常:IOErrOr

试图打开并读取一个不存在的文件

试图在一个不存在的目录中创建文件

试图打开一个没有读访问权限的文件

试图在一个没有写访问权限的目录下创建文件

计算机遇到磁盘错误

 

OS

os.path提供了操作路径的函数。使用OS.path.join可将目录名称组合成路径。OS.path.split具有相反的功能,它将路径的最后。(.是当前目录,..是父目录)

一个组件提取出来。

>>> import os.path
>>> os.path.join("snakes", "python")
'snakes\\python'
>>> os.path.split("C:\\Program Files\\Python30\\Lib")
('C:\\Program Files\\Python30', 'Lib')

将一个路径分解为若干目录的名称。

def split_fully(path):
    parent_path, name = os.path.split(path)
    if name == "":
        return (parent_path, )
    else:
        return split_fully(parent_path) + (name, )

os.path.splitext可分解出一个文件的扩展名。

>>> os.path.splitext("image.jpg")
('image', '.jpg')
>>> extension = os.path.splitext("image.jpg")[1]
>>> extension
'.jpg'

os.path.normpath能够规范化或“清理路径”。

>>> os.path.normpath(r"C:\\Programe Files\Perl\..\Python30")
'C:\\Programe Files\\Python30'

os.path.abspath将相对路径转变为绝对路径。

>>> os.path.abspath("other_stuff")
'D:\\我的文件\\学习\\python\\learn\\other_stuff'

os.listdir能够获取一个目录下的条目列表。

>>> os.listdir("D:\\Thunder")
['BHO', 'Profiles', 'Program', 'Thunder BHO Platform', 'UninstallXLWFP.exe']

      使用os.path.join可用构造出上面每个条目的完整路径。

def print_dir(dir_path):
    for name in os.listdir(dir_path):
        print(os.path.join(dir_path, name))

sorted()函数可以对条目排序。

>>> sorted(os.listdir("D:\\Thunder"))
['BHO', 'Profiles', 'Program', 'Thunder BHO Platform', 'UninstallXLWFP.exe']

os.path.isfile可以判断一个路径是否指向文件。

>>> os.path.isfile("C:\\Program Files")
False

os.path.isdir可用判断一个路径是否指向目录。

>>> os.path.isdir("C:\\Program Files")
True

递归目录列表

def print_tree(dir_path):
    for name in os.listdir(dir_path):
        full_path = os.path.join(dir_path, name)
        print(full_path)
        if os.path.isdir(full_path):
            print_tree(dir_path)

 

shutil

包含了操作文件的函数。

shutil.move可以给文件重命名,或者将它移到到另一个目录下。

>>> import shutil
>>> shutil.move("test.txt", "test1.txt")
'test1.txt'

shutil.copy将文件复制成一个新文件并保存。

>>> shutil.copy("test.txt", "D:\\copy.txt")  # 将test.txt复制了一份名为copy.txt,保存在D盘下
'D:\\copy.txt'

os.remove可删除文件

>>> import os
>>> os.remove("D:\\copy.txt")

os.mkdir可以创建目录(目录create a dir必须存在)。

>>> os.mkdir("D:\\create a dir\\a")

os.makedirs可以创建多个不存在的目录(目录create a dir不需要存在)。

>>> os.makedirs("D:\\create a dir\\a")

os.rmdir可用删除空目录。如果不是空目录会报错。

>>> os.rmdir("D:\\create a dir")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OSError: [WinError 145] 目录不是空的。: 'D:\\create a dir'

shutil.rmtree可以删除一整个非空的目录。

>>> shutil.rmtree("D:\\create a dir")

 

通配

通配符 匹配 示例
* 0或多个任意字符 *.m*匹配扩展名以m开头的名称
任意单个字符 ???匹配恰好包含三个字符的名称
[...] 方括号中列出的任意一个字符 [AEIOU]*匹配以大写的原因字母开头的名称
[!...] 不在方括号中出现的任意一个字符 *[!s]匹配不以s结尾的名称

 返回当前目录中扩展名为txt的文件。

>>> import glob
>>> glob.glob("*\\*.txt")

 

posted @ 2021-08-26 21:40  奋斗的小仔  阅读(16)  评论(0编辑  收藏  举报