当前位置:   article > 正文

python之文件读写、目录操作、序列化str操作后写入文档、xml模块、configparser模块_python 将str写到wb文件中

python 将str写到wb文件中

目录

一、文件打开

二、文件读取

三、文件写入

四、操作文件和目录

五、序列化(str)

六、xml模块

关于:ini、yaml/yml、excel文件的python操作封装


一、文件打开

open函数是用来打开文件;格式:open (name[.mode[.buffering]]);

必填参数

1.name(即:文件名或文件路径);

选填参数

1.mode(即:权限模式)、包含:w、r、b、a、+;

2.buffering(即:控制文件的缓冲),如值为0,无缓冲,直接将数据写到硬盘;若为1,有缓冲,在flush()或close()执行后

数据才会更新到硬盘;如为大于1的数字则代表缓冲区大小(字节);如为负数,表示默认缓冲区的大小;

mode值功能描述
r读模式
w写模式
a追加模式
b二进制模式(可添加到其他模式中使用)
+读/写模式(可添加到其他模式中使用)
  1. f=open(r'c:\study\test.txt','r')#默认也是r模式
  2. 如果文件不存在,会报错;
  3. 如果文件包含汉字,报错:
  4. UnicodeDecodeError: 'gbk' codec can't decode byte 0xa0 in position 194: illegal multibyte sequence
  5. f=open(r'c:\study\test.txt','r',encoding='utf-8')#加上编码格式

二、文件读取

read()、readline()、readlines()的区别:

  1. f = open('zhengli','r', encoding='utf-8')
  2. print(f.read(10)) # read(n) n 指的是 光标移动字节位置

由于在文件打开后,都有执行close()方法;但是如果IO异常,close()方法就不会执行;为了代码的健壮性,有两种方式:

1.try……finally……:无论如何都要执行finally后面的代码块;

2.with open(r'xxx.txt','r') as f;

  1. try:
  2. f = open("../stu001.txt", 'r+')
  3. print(f.read())
  4. finally:
  5. if f:
  6. f.close()
  7. ########################################################
  8. with open(r'../stu001.txt','r+') as f:
  9. print(f.read())
  10. ###由于很多文件数据较大,如:配置文件等,readlines()方法更加合理####
  11. with open(r'../stu001.txt','r+') as f:
  12. for line in f.readlines():
  13. print(line.strip())

三、文件写入

  1. n=['11111\n','222222\n','333333\n','44444\n','555']
  2. with open(r'../stu001.txt','w') as f:
  3. for n1 in n:
  4. f.writelines(n1)

四、操作文件和目录

主要使用的包:os、shutil

  1. # -*-coding:utf-8-*-
  2. # f = open("../stu001.txt",'r+')
  3. # print("-----111-------\n"+f.read())
  4. # f.close()
  5. # f = open("../stu001.txt",'r+')
  6. # print("-----222-------\n"+f.readline())
  7. # f.close()
  8. # f = open("../stu001.txt",'r+')
  9. # print("-----333-------")
  10. # print(f.readlines())
  11. # f.close()
  12. # try:
  13. # f = open("../stu001.txt", 'r+')
  14. # print(f.read())
  15. # finally:
  16. # if f:
  17. # f.close()
  18. # ########################################################
  19. # with open(r'../stu001.txt','r+') as f:
  20. # print(f.read())
  21. # ###由于很多文件数据较大,如:配置文件等,readlines()方法更加合理####
  22. # n=['11111\n','222222\n','333333\n','44444\n','555']
  23. # with open(r'../stu001.txt','w') as f:
  24. # for n1 in n:
  25. # f.writelines(n1)
  26. import os
  27. '''获得当前python脚本工作的目录路径'''
  28. print(os.getcwd())# D:\pythonProject\study\study001\
  29. '''获得当前python脚本工作的文件路径'''
  30. print(__file__)# D:/pythonProject/study/study001/001_file_opearation.py
  31. '''返回指定目录下的所有文件及目录名,默认当前目录路径'''
  32. print(os.listdir("D:\pythonProject\study\study001"))# ['001_file_opearation.py', '__init__.py']
  33. print(os.listdir())# ['001_file_opearation.py', '__init__.py']
  34. '''删除一个文件'''
  35. os.remove(r"D:\pythonProject\study\study001\test")
  36. '''删除多个空目录'''
  37. os.removedirs(r"D:\pythonProject\study\study001\test\test001")
  38. '''检验给出的路径是否是一个文件'''
  39. os.path.isfile(r"D:\pythonProject\study\stu001.txt")
  40. '''检验给出的路径是否是一个目录'''
  41. os.path.isdir("D:\pythonProject\study\stu001.txt")
  42. '''判断是否是绝对路径'''
  43. os.path.isabs("D:\pythonProject\study\study001")
  44. '''判断路径是否真的存在'''
  45. os.path.exists("D:\pythonProject\study\study001")
  46. '''分离一个路径的目录名和文件名'''#结果返回一个tuple
  47. print(os.path.split("D:\pythonProject\study\stu001.txt"))#('D:\\pythonProject\\study', 'stu001.txt')
  48. '''分离一个路径的扩展名'''#结果返回一个tuple
  49. print(os.path.splitext("D:\pythonProject\study\stu001.txt"))#('D:\\pythonProject\\study\\stu001', '.txt')
  50. '''获取路径名'''
  51. print(os.path.dirname("D:\pythonProject\study\stu001.txt"))
  52. '''获取文件名'''
  53. print(os.path.basename("D:\pythonProject\study\stu001.txt"))
  54. '''重命名文件或目录'''
  55. os.rename(old,new)
  56. '''创建多级目录'''
  57. os.makedirs(r'D:\pythonProject\study\study001\te')
  58. '''创建单个目录'''
  59. os.mkdir("tes")
  60. '''获取文件属性'''
  61. os.stat("D:\pythonProject\study\stu001.txt")
  62. '''获取文件大小'''
  63. os.path.getsize("D:\pythonProject\study\stu001.txt")
  64. import shutil
  65. '''复制文件夹'''
  66. shutil.copytree("olddir","newdir")#olddir、newdir都只能是目录,且mewdir必须不存在
  67. '''复制文件'''
  68. shutil.copyfile("oldfile","newfile")#oldfile、newfile都只能是文件
  69. shutil.copy("oldfile","new")#oldfile只能是文件,new可以是文件,也可是目标目录
  70. '''移动文件/目录'''
  71. shutil.move('oldpos','newpos')
  72. '''删除目录'''
  73. os.rmdir('dir')#只能删除空目录
  74. shutil.rmtree('dir')#空目录、有内容的目录都可删除

五、序列化(str)

(关联:json序列化序列化与反序列化(pyhton的json、与JavaScript的JSON)、Form组件返回的error_messages如何转换为dict类型、django序列化_冷凝娇的博客-CSDN博客)

python中提供两个模块:cPickle、pickle;前者是C语言编写的,效率比后者高很多;但是功能是一样的;

  1. try:
  2. import cPickle as pickle
  3. except ImportError:
  4. import pickle

pickle实现序列化主要是使用dump方法或dumps方法;dumps方法可以将任意对象序列化成一个str;然后将其写入文件;dump方法可以直接将序列化后的对象直接写入文件中;

  1. n=['11111\n','222222\n','333333\n','44444\n','555']
  2. ######################方式一:############################
  3. n_new=pickle.dumps(n)
  4. with open('../stu001.txt','wb') as f:
  5. f.write(n_new)
  6. ######################方式二:############################
  7. with open('../stu001.txt','wb') as f:
  8. pickle.dump(n,f)

六、xml模块

xml、yaml、configparser等常用模块

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号