稿定设计官网入口,优化设计电子版,凡客诚品还有吗,手机网站打开手机app文件操作文件常用操作open#xff1a;打开read#xff1a;读取write#xff1a;写入close#xff1a;关闭readline#xff1a;行读取readlines#xff1a;多行读取seek#xff1a;文件指针操作tell#xff1a;指针位置打开操作open(file, moder, buffering-1, encoding…文件操作文件常用操作open打开read读取write写入close关闭readline行读取readlines多行读取seek文件指针操作tell指针位置打开操作open(file, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)mode模式r只读打开w只写打开新文件x创建新文件a只写打开追加内容b二进制模式t缺省模式文本模式读或写打开后追加缺失模式buffering缓冲区缺省-1二进制模式使用io.DEFAULT_BUFFER_SIZE可以查到默认是4096或8192。文本模式终端设备下是行缓冲。0表示关闭行缓冲。1表示只使用行缓冲。大于1表示设置二进制模式缓存值。缓冲区指暂时放置在内存。encoding编码errorsNone和strict表示错误抛出异常ignore表示忽略。newline读时缺省为None表示\r,\n,\r\n均转为\n‘’表示不换行其它字符可为分行。写时缺省表示\n被替换为系统缺省行分隔符os.linesep,\n表示\n不替换其它字符表示换行符会替换为指定字符。closefd关闭文件描叙符True表示关闭它。False会在文件关闭后保留描叙符。fileobj.fileno()查看文件指针seek(offset, whence 0)offset为0时代表文本开头为1时代表当前指针位置为2时代表文件末端。文本模式下offset只能时0的时候whence可以不为0为正整数表示偏移多少字节。二进制模式下offset为0时whence为正整数表示便宜多少字节offset为1和2时可正可负。read读取read(size-1)缺省-1表示指针所在位置后全部读取填正数表示读取指针位置后多少个字节。行读取readline(size-1)缺省-1一行行读取填正数表示读取行内前几个字节。readlines()按行读取所有内容返回列表。write写write(s)文本模式时从指针开始写入s并返回写入字节数二进制时把bytes写入并返回字节数。writelines(lines)把字符串列表写入文件。close关闭关闭文件。其它seekable()是否可seekreadable()是否可读writeable()是否可写closed是否已关闭1 f open(test.txt, w)2 f.write(HI\n)3 f.writelines([Hello\n, a])4 f.seek(0)5 print(f.readlines()) #[HI\n, Hello\n, a]6 print(f.seekable()) #True7 print(f.readable()) #True8 print(f.writable()) #True9 print(f.closed) #False10 f.close()11 print(f.closed) #True上写文管理文件打开用完后一定要关闭不然系统会有进程残留久了当数量达到上限张不能再打开文件导致错误。with语句可以有效控制文件关闭。1 with open(test) as f:2 print(f.closed) #False3 print(f.closed) #TrueStringIO和BytesIOIO模块中的类在内存中开辟一个处理文本或二进制文本的空间close后内存释放。1 importio2 f io.StringIO()3 f.write(HI) #HI4 f.seek(0)5 print(f.read())6 b io.BytesIO()7 b.write(ba)8 b.seek(0)9 print(b.read()) #bafile-like对象类文件对象可以像文件一样操作。1 importsys2 f sys.stdout3 f.write(HI)4 f sys.stderr5 f.write(Hello)6 #HelloHI正则表达式正则表达式修饰符 - 可选标志修饰符描述re.I使匹配对大小写不敏感re.L做本地化识别(locale-aware)匹配re.M多行匹配影响 ^ 和 $re.S使 . 匹配包括换行在内的所有字符re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。正则表达式模式模式描述^匹配字符串的开头$匹配字符串的末尾。.匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹配包括换行符的任意字符。[...]用来表示一组字符,单独列出[amk] 匹配 am或k[^...]不在[]中的字符[^abc] 匹配除了a,b,c之外的字符。re*匹配0个或多个的表达式。re匹配1个或多个的表达式。re?匹配0个或1个由前面的正则表达式定义的片段非贪婪方式re{ n}匹配n个前面表达式。例如o{2}不能匹配Bob中的o但是能匹配food中的两个o。re{ n,}精确匹配n个前面表达式。例如o{2,}不能匹配Bob中的o但能匹配foooood中的所有o。o{1,}等价于o。o{0,}则等价于o*。re{ n, m}匹配 n 到 m 次由前面的正则表达式定义的片段贪婪方式a| b匹配a或b(re)G匹配括号内的表达式也表示一个组(?imx)正则表达式包含三种可选标志i, m, 或 x 。只影响括号中的区域。(?-imx)正则表达式关闭 i, m, 或 x 可选标志。只影响括号中的区域。(?: re)类似 (...), 但是不表示一个组(?imx: re)在括号中使用i, m, 或 x 可选标志(?-imx: re)在括号中不使用i, m, 或 x 可选标志(?#...)注释.(? re)前向肯定界定符。如果所含正则表达式以 ... 表示在当前位置成功匹配时成功否则失败。但一旦所含表达式已经尝试匹配引擎根本没有提高模式的剩余部分还要尝试界定符的右边。(?! re)前向否定界定符。与肯定界定符相反当所含表达式不能在字符串当前位置匹配时成功(? re)匹配的独立模式省去回溯。\w匹配字母数字\W匹配非字母数字\s匹配任意空白字符等价于 [\t\n\r\f].\S匹配任意非空字符\d匹配任意数字等价于 [0-9].\D匹配任意非数字\A匹配字符串开始\Z匹配字符串结束如果是存在换行只匹配到换行前的结束字符串。c\z匹配字符串结束\G匹配最后匹配完成的位置。\b匹配一个单词边界也就是指单词和空格间的位置。例如 er\b 可以匹配never 中的 er但不能匹配 verb 中的 er。\B匹配非单词边界。er\B 能匹配 verb 中的 er但不能匹配 never 中的 er。\n, \t, 等.匹配一个换行符。匹配一个制表符。等\1...\9匹配第n个分组的子表达式。\10匹配第n个分组的子表达式如果它经匹配。否则指的是八进制字符码的表达式。详细正则表达式参考https://www.w3cschool.cn/regex_rmjc/路径操作from os import path模块1 from os importpath2 p path.join(d:/, python, vn)3 print(p, type(p)) #d:\python\vn 4 print(path.exists(p)) #True 或 False 表示存在或不存在5 print(path.split(p)) #(d:\\python, vn)分割路径6 print(path.dirname(p), path.basename(p)) #d:\python vn 路径和基名7 print(path.abspath(), path.abspath(.)) #绝对路径8 print(path.abspath(__file__)) #打印当前文件路径9 print(path.splitdrive(p)) #(d:, \\python\\vn)windows方法from pathlib import Path模块1 from pathlib importPath2 p Path(.) #空白 .均为当前目录3 print(Path(d:/, python/vn)) #d:\python\vn4 print(Path(d:/, Path(python, vn))) #d:\python\vn5 p1 vn /p6 p2 python /p17 p3 p1 /p28 print(p1, p2, p3) #vn python\vn vn\python\vn9 print(p3.joinpath(a, b/c, Path(d/e))) #vn\python\vn\a\b\c\d\e10 print(p3.parts) #(vn, python, vn)11 print(p3.parent) #vn\python12 for i inp3.parents:13 print(i)14 #vn\python15 #vn16 #.17 p Path(/a/b/c/d/e.py)18 print(p.parent) #\a\b\c\d19 print(p.name) #e.py20 print(p.stem) #e21 print(p.suffix) #.py22 print(p.suffixes) #[.py]23 print(p.with_name(f)) #\a\b\c\d\f24 print(p.with_name(f).with_suffix(.txt)) #\a\b\c\d\f.txt25 print(p.cwd()) #返回当前工作目录26 print(p.home()) #返回当前家目录27 print(p.exists()) #返回True或False判断目录或文件是否存在28 print(p.is_dir()) #返回True或False判断是否为目录29 print(p.is_file()) #返回True或False判断是否为文件30 print(p.is_symlink()) #返回True或False判断是否为软连接31 print(p.is_socket()) #返回True或False判断是否为socket文件32 print(p.is_block_device()) #返回True或False判断是否为块设备33 print(p.is_char_device()) #返回True或False判断是否为字符设备34 print(p.is_absolute()) #返回True或False判断是否为绝对路径35 print(p.resolve()) #返回一个绝对路径如果是软连接则直接被解析36 print(p.absolute()) #获取结对路径37 p Path(d:/a/b)38 p.mkdir(parentsTrue, exist_okTrue) #创建目录39 p.rmdir() #删除空目录目录非空不能删除抛出异常40 p.mkdir(parentsTrue, exist_okTrue) #创建目录parents为False时父目录不存在抛出异常exit_ok为False时路径存在抛出异常41 (p / c.py).touch() #创建文件42 print(p.stat()) #获取文件或目录信息43 print(p.lstat()) #获取文件或目录信息44 print(p.as_uri()) #file:///d:/a/b把路径返回成URI45 for i in Path(d:/).iterdir(): #迭代目录里的文件和目录46 print(i)通配符glod(pattern)通配给定的模式返回生成器对象rglod(pattern)通配给定的模式递归目录返回生成器对象代表一个字符*代表任意个字符[a-z]或[abc]代表一个字符1 from pathlib importPath2 print(list(Path(d:/a/b).glob(c*))) #返回c开头的文件路径列表文件操作1 from pathlib importPath2 p Path(d:/a/b/c.py)3 p.write_text(a) #文档模式写入4 p.write_bytes(ba) #二进制模式写入5 print(p.read_text()) #a文本模式读取6 print(p.read_bytes()) #ba二进制模式读取7 with Path(d:/a/b/c.txt).open() as f:8 print(f.read())os模块操作系统平台1 from pathlib importPath2 importos3 print(os.name) #windows系统是ntlinux系统是linux4 print(os.listdir(Path(d:/))) #获取目录下文件和目录信息5 print(os.stat(Path(d:/a/b/c.py))) #获取文件信息6 os.chmod(Path(d:/a/b/c.py), 0o777) #修改权限shutil模块高级文件操作库copy复制1 from pathlib importPath2 importshutil345 defignore(src, names):6 print(src, names)7 ig filter(lambda x: x.startswith(a), names)8 print(list(ig))9 returnset(ig)101112 a Path(d:/a/b/a.txt) #原文件13 b Path(d:/a/b/b.txt)14 c Path(d:/a/b/c.txt)15 d Path(d:/a/b/d.txt)16 e Path(d:/a/b/e.txt)17 with a.open() as aa:18 with b.open(w) as bb:19 shutil.copyfileobj(aa, bb) #复制内容20 shutil.copyfile(a, c) #复制内容21 shutil.copymode(a, c) #复制权限22 shutil.copystat(a, c) #复制元数据和权限23 shutil.copy(a, d) #复制内容和权限和部分元数据24 shutil.copy2(a, e) #复制内容和权限和元数据25 shutil.copytree(Path(d:/a/b/), Path(d:/a/c/), ignoreignore) #复制目录26 #copytree(src, dst, symlinksFalse, ignoreNone, copy_functioncopy2,ignore_dangling_symlinksFalse)27 #ignore接受一个函数,函数接收两个参数src和os.listdir(src),返回set,copytree张过滤set的内容rm删除1 from pathlib importPath2 importshutil3 shutil.rmtree(Path(d:/a/c)) #如同rm -rf一样危险慎用move移动1 from pathlib importPath2 importshutil3 shutil.move(Path(d:/a/b), Path(d:/a/c))压缩from pathlib importPathimportshutilshutil.make_archive(Path(d:/a/z), zip, Path(d:/a/c/)) #把目录c里的文件和目录压缩成z.zip