Python常用文件和目录操作函数
序号 | 方法及描述 |
---|---|
1 | 检验权限模式 |
2 | 改变当前工作目录 |
4 | 更改权限 |
5 | 更改文件所有者 |
6 | 改变当前进程的根目录 |
7 | 关闭文件描述符 fd |
8 | os.closerange(fd_low, fd_high) 关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略 |
11 | 通过文件描述符改变当前工作目录 |
12 | 改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限。 |
13 | 修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。 |
14 | 强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。 |
15 | os.fdopen(fd[, mode[, bufsize]]) 通过文件描述符 fd 创建一个文件对象,并返回这个文件对象 |
19 | 强制将文件描述符为fd的文件写入硬盘。 |
20 | 裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。 |
21 | 返回当前工作目录 |
22 | 返回一个当前工作目录的Unicode对象 |
28 | 返回path指定的文件夹包含的文件或文件夹的名字的列表。 |
33 | 递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。 |
35 | 以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。 |
38 | 打开一个文件,并且设置需要的打开选项,mode参数是可选的 |
43 | 从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。 |
45 | 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。 |
46 | 递归删除目录。 |
47 | 重命名文件或目录,从 src 到 dst |
48 | 递归地对目录进行更名,也可以对文件进行更名。 |
49 | 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。 |
56 | 返回唯一的路径名用于创建临时文件。 |
57 | 返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。 |
58 | 为创建一个临时文件返回一个唯一的路径 |
60 | 删除文件路径 |
61 | 返回指定的path文件的访问和修改的时间。 |
63 | 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度 |
64 | 获取文件的属性信息。 |
重点关注:
常用函数如下:
os.getcwd() #返回当前工作目录,即cmd或终端中目录,而不是python命令或者执行py文件所在的位置。
os.chdir(path) #改变当前工作目录
os.path.abspath(path) #获取当前当前文件的绝对路劲
os.path.dirname() #获取当前文件上一层目录
os.path.basename(a) #获取文件名称
os.path.abspath()返回绝对路径,但不处理符号链接(注意linux中的符号链接不同于windows中的快捷方式)
os.path.realpath()先处理路径中的符号链接,再返回绝对路径。
返回指定文件的标准路径,而非软链接所在的路径 Return the canonical path of the specified filename, eliminating any symbolic links encountered in the path.
在开发过程中,如果想要获取当前文件夹路径有两种方式:
常用的是
(1)
import os
print(os.getcwd())
这种方法在当工作目录变化会发生变化,不够稳定。
(2)
import os
print(os.path.dirname(os.path.abspath(__file__))) #打印当前文件的绝对路劲,获取当前文件上一层目录
这种方法测试是稳定的。
Python内置全局变量
我们知道python自带一些内置的全局变量,比如__name__,__file__等。(注意:直接在终端中运行无__file__变量)。
在python中vars()函数可以查看内置全局变量,以字典方式返回内置全局变量。
#!/usr/bin/env python
# -*- coding:utf8 -*-
print(vars())
#输出
# {'__builtins__': <module 'builtins' (built-in)>, '__spec__': None, '__package__': None, '__doc__': None, '__name__': '__main__', '__cached__': None, '__file__': 'H:/py/index.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000000AC32C66A58>}
__doc__ :获取文件的注释
#!/usr/bin/env python
# -*- coding:utf8 -*-
"""
这里是文件的注释
"""
print(__doc__) #__doc__ :获取文件的注释
#输出
# 这里是文件的注释
__file__ 【重点】获取当前文件的路径
#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__file__) #__file__ :获取当前文件的路径
#输出
# H:/py/index.py
__package__ :获取导入文件的路径,多层目录以点分割,注意:对当前文件返回None
#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__package__) #注意:对当前文件返回None
from lib.ska import mk #导入mk模块文件
print(mk.__package__) #__package__ :获取导入文件的路径,多层目录以点分割,注意:对当前文件返回None
#输出
# None
# lib.ska
# lib.ska
__cached__ :获取导入文件的缓存路径
#!/usr/bin/env python
# -*- coding:utf8 -*-
from lib.ska import mk #导入mk模块文件
print(mk.__cached__) #__cached__ :获取导入文件的缓存路径
#输出
# H:\py\lib\ska\__pycache__\mk.cpython-35.pyc
__name__ 【重点】获取导入文件的路径加文件名称,路径以点分割,注意:获取当前文件返回__main__
#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__name__) #注意:获取当前文件返回__main__
from lib.ska import mk #导入mk模块文件
print(mk.__name__) #获取导入文件的路径加文件名称,路径以点分割
#输出
# __main__
# lib.ska.mk
为了区分 主执行代码和被调用文件,Python引入了变量:__name__。
1)当文件是被调用时,__name__的值为模块名;
2)当文件被执行时,__name__的值为 ‘__main__’。
__name__ 全局变量写在入口文件里,只有执行入口文件时的返回值才是__main__ ,如果入口文件被导入到别的文件里,此时入口文件的__name__返回值就不在是__main__,而是如果文件的路径加入口文件名称,所以我们可以用__name__全局变量来防止别人盗链入口文件。
__builtins__ 【重点】内置函数在这里面
附录:
在python中,查看内置函数、内置常量
import builtins
print(dir(builtins))
查看关键字
import keyword
print(keyword.kwlist)