Python Notes 1
python文件相关
os.path模块
os.path.exists()
: 判断当前目录以及文件是否存在os.path.mkdir()
: 若目录或文件不存在,则创建1 2 3 4 5 6 7 8 9
import os # 目录 dirs = '/Users/joseph/work/python/' if not os.path.exists(dirs): os.makedirs(dirs) # 文件 filename = '/Users/joseph/work/python/poem.txt' if not os.path.exists(filename): os.system(r"touch {}".format(path))#调用系统命令行来创建文件
os.listdir()
: 用于返回指定的文件夹包含的文件或文件夹的名字的列表1 2 3 4 5 6 7 8
# 打开文件 path = "/var/www/html/" # 如果目录名字为中文 需要转码处理 path = unicode(path,'utf-8') dirs = os.listdir(path) # 输出所有文件和文件夹 for file in dirs: print(file)
os.path.join()
: 路径拼接1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
import os path = "/home" # Join various path components print(os.path.join(path, "User/Desktop", "file.txt")) # /home/User/Desktop/file.txt path = "User/Documents" # Join various path components print(os.path.join(path, "/home", "file.txt")) # /home/file.txt # In above example '/home' # represents an absolute path # so all previous components i.e User / Documents # are thrown away and joining continues # from the absolute path component i.e / home. print(os.path.join(path, "Downloads", "file.txt", "/home")) # /home # In above example '/User' and '/home' # both represents an absolute path # but '/home' is the last value # so all previous components before '/home' # will be discarded and joining will # continue from '/home'
os.path.abspath(path)
: 返回绝对路径os.path.basename(path)
: 返回文件名os.path.commonprefix(list)
: 返回list(多个路径)中,所有path共有的最长的路径os.path.dirname(path)
: 返回文件路径os.path.expanduser(path)
: 把path中包含的"~“和”~user"转换成用户目录os.path.expandvars(path)
: 根据环境变量的值替换path中包含的 “$name” 和 “${name}”os.path.getatime(path)
: 返回最近访问时间(浮点型秒数)os.path.getmtime(path)
: 返回最近文件修改时间os.path.getctime(path)
: 返回文件 path 创建时间os.path.getsize(path)
: 返回文件大小,如果文件不存在就返回错误os.path.isfile(path)
: 判断路径是否为文件os.path.isdir(path)
: 判断路径是否为目录os.path.islink(path)
: 判断路径是否为链接os.path.ismount(path)
: 判断路径是否为挂载点os.path.normcase(path)
: 转换path的大小写和斜杠os.path.normpath(path)
: 规范path字符串形式os.path.realpath(path)
: 返回path的真实路径os.path.relpath(path[, start])
: 从start开始计算相对路径os.path.samefile(path1, path2)
: 判断目录或文件是否相同os.path.sameopenfile(fp1, fp2)
: 判断fp1和fp2是否指向同一文件os.path.samestat(stat1, stat2)
: 判断stat tuple stat1和stat2是否指向同一个文件os.path.split(path)
: 把路径分割成 dirname 和 basename,返回一个元组os.path.splitdrive(path)
: 一般用在 windows 下,返回驱动器名和路径组成的元组os.path.splitext(path)
: 分割路径,返回路径名和文件扩展名的元组os.path.splitunc(path)
: 把路径分割为加载点与文件os.path.walk(path, visit, arg)
: 遍历path,进入每个目录都调用visit函数,visit函数必须有3个参数(arg, dirname, names),dirname表示当前目录的目录名,names代表当前目录下的所有文件名,args则为walk的第三个参数os.walk(path,topdown=True,onerror=None)
: 函数返回一个元组,含有三个元素。这三个元素分别是:每次遍历的路径名、路径下子目录列表、目录下文件列表。1 2 3 4 5
path = 'xxx/xxx' for root, dirs, files in os.walk(path): print(root) # path以及path下的目录 print(dirs) # path下的文件夹 print(files) # path下每个文件夹中的文件
区别:
os.path.walk()
与os.walk()
产生的文件名列表并不相同.os.walk()产生目录树下的目录路径和文件路径,而os.path.walk()只产生文件路径(是子目录与文件的混合列表)。 ref: https://www.cnblogs.com/zmlctt/p/4222621.htmlos.path.supports_unicode_filenames
: 设置是否支持unicode路径名