老莫的笔记本  
  
查看: 112|回复: 0

python 文件操作基础 大概版

[复制链接]

664

主题

880

帖子

5153

积分

超级版主

Rank: 8Rank: 8

积分
5153
发表于 2023-9-12 23:34:30 | 显示全部楼层 |阅读模式


  1. # # This is a sample Python script.
  2. #
  3. # # Press Shift+F10 to execute it or replace it with your code.
  4. # # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
  5. #
  6. #
  7. # def print_hi(name):
  8. #     # Use a breakpoint in the code line below to debug your script.
  9. #     print(f'Hi, {name}')  # Press Ctrl+F8 to toggle the breakpoint.
  10. #
  11. #
  12. # # Press the green button in the gutter to run the script.
  13. # if __name__ == '__main__':
  14. #     print_hi('PyCharm_main')
  15. #
  16. # # See PyCharm help at https://www.jetbrains.com/help/pycharm/
  17. #

  18. # 参考文献
  19. # https://zhuanlan.zhihu.com/p/56909212

  20. # 新建一个文件 写入
  21. with open('da.txt','w') as f:
  22.     data = 'cbd'
  23.     f.write(data)

  24. # 读取只读
  25. with open('da.txt','r') as f:
  26.     data = f.read()
  27.     print('context:{}'.format(data))


  28. # 获取文件目录列表 【老版本 可以忽略】
  29. import os
  30. entrice = os.listdir('venv')
  31. print(entrice)
  32. # ['.gitignore', 'Lib', 'pyvenv.cfg', 'Scripts']

  33. for i in entrice:
  34.     print(i)

  35. with os.scandir('venv') as v:
  36.     for i in v :
  37.         print(i)


  38. # 新版本
  39. # 1.使用 scandir() 不用 用下面的path
  40. # dc = os.scandir('venv')
  41. # print(dc) #返回的是一个迭代器
  42. # is_file 判断是不是文件
  43. # is_dir() 判断是不是目录
  44. # .stat()  获取文件的详细属性   提供了例如文件大小和最后修改时间的信息 st_mtime(更新时间等)
  45. with os.scandir('venv') as dc:
  46.     for v in dc:
  47.         if v.is_file():
  48.             print('这是文件'+v.name)
  49.             print('这个文件的修改时间是{}'.format(v.stat().st_mtime) )
  50.         elif v.is_dir():
  51.             print('这是目录'+v.name)
  52.         else:
  53.             print('这是啥')
  54.         # print('目录名称是{}'.format(v))


  55. # 2. 使用pthlib 模块获取目录
  56. # pathlib.Path() 返回的是 PosixPath 或 WindowsPath 对象,这取决于操作系统。
  57. # pathlib.Path() 对象有一个 .iterdir() 的方法用于创建一个迭代器包含该目录下所有文件和目录。由 .iterdir() 生成的每个条目都包含文件或目录的信息
  58. # 调用 pathlib.Path() 并传入了一个路径参数。然后调用 .iterdir() 来获取 my_directory 下的所有文件和目录列表。
  59. from pathlib import Path
  60. dm = Path('venv')
  61. for v in dm.iterdir():
  62.     if v.is_file():
  63.         print('Path这是文件' + v.name)
  64.     elif v.is_dir():
  65.         print('Path这是目录' + v.name)
  66.     else:
  67.         print('Path这是啥?')





  68. # 创建目录
  69. # 如果目录已经存在 则抛出异常
  70. # os.mkdir('laomo3')

  71. # 如果目录已经存在 则抛出异常
  72. # p = Path('laomo2')
  73. # p.mkdir()

  74. # 捕获文件重复的异常
  75. p = Path('laomo2/vcm')
  76. # try:
  77. #     p.mkdir()
  78. # except FileExistsError as e:
  79. #     print(e)
  80.     # [WinError 183]当文件已存在时,无法创建该文件。: 'laomo2'

  81. # 处理异常(忽略异常)  mkdir() 传入 exist_ok=True 参数来忽略 FileExistsError 异常:如果目录已存在,则不会引起错误。
  82. p.mkdir(exist_ok=True)


  83. # 创建一组文件夹
  84. os.makedirs('laomo1/2012/02/02',mode=0o770, exist_ok=True)

  85. # 创建一组文件夹 默认的模式为 0o777
  86. m = Path('laomo2/2012/02/02')
  87. m.mkdir(parents=True, exist_ok=True)


  88. # 文件名模式匹配(就是文件搜索 )
  89. # endswith() 和 startswith() 字符串方法
  90. # fnmatch.fnmatch()
  91. # glob.glob()
  92. # pathlib.Path.glob()


  93. # 遍历目录和处理文件 os.walk() 来实现这一功能


  94. # 创建临时文件和目录
  95. # tempfile 模块来便捷的创建临时文件和目录
  96. # tempfile 可以在你程序运行时打开并存储临时的数据在文件或目录中。 tempfile 会在你程序停止运行后删除这些临时文件。

  97. from tempfile import  TemporaryFile

  98. # 创建一个临时文件并为其写入一些数据
  99. # 模式为 w + t,这使得 tempfile 在写入模式下创建临时文本文件。 没有必要为临时文件提供文件名,因为在脚本运行完毕后它将被销毁。
  100. fp = TemporaryFile('w+t')
  101. fp.write('Hello World!')
  102. # 回到开始,从文件中读取数据
  103. fp.seek(0)
  104. data = fp.read()
  105. print(data)
  106. # 关闭文件,之后他将会被删除
  107. fp.close()

  108. # .TemporaryFile() 也是一个上下文管理器,因此它可以与with语句一起使用。 使用上下文管理器会在读取文件后自动关闭和删除文件
  109. # with TemporaryFile('w+t') as fp:
  110. #     fp.write('Hello universe!')
  111. #     fp.seek(0)
  112. #     fp.read()
  113. # 临时文件现在已经被关闭和删除


  114. # 删除文件和目录
  115. # 可以使用 os,shutil 和 pathlib 模块中的方法删除单个文件,目录和整个目录树。

  116. # 要删除单个文件(只能删文件不能删目录),请使用
  117. # pathlib.Path.unlink(),
  118. # os.remove() 或 os.unlink()。
  119. # os.remove('da.txt')


  120. # 删除目录 #如果目录不为空 则抛出错误
  121. # os.rmdir()
  122. # pathlib.Path.rmdir()
  123. # shutil.rmtree()

  124. # os.rmdir('laomo2')
  125. # OSError: [WinError 145] 目录不是空的。: 'laomo2'

  126. # 删除完整的目录树
  127. # shutil.rmtree()

  128. import  shutil
  129. # shutil.rmtree('laomo1')


  130. # 复制、移动和重命名文件和目录
  131. # 最常用的函数是
  132. # shutil.copy()  复制单个文件  将文件从一个位置复制到另一个位置 不保留相关信息
  133. # shutil.copy2() 复制单个文件  将文件从一个位置复制到另一个位置 保留相关信息 例如更新时间不变
  134. # shutil.copytree(src,dest) 复制整个目录及其中包含的所有内容


  135. # src = 'path/to/file.txt'
  136. # dst = 'path/to/dest_dir'
  137. # shutil.copy(src, dst)


  138. # 移动文件和目录
  139. # shutil.move(src,dst)   # src 是要移动的文件或目录,dst 是目标:



  140. # 重命名文件和目录
  141. # os.rename(src,dst)
  142. # pathlib 模块中的 rename()


  143. # ===归档压缩
  144. # 读取ZIP文件
  145. # import zipfile
  146. #
  147. # with zipfile.ZipFile('data.zip', 'r') as zipobj:
  148. #     zipobj.namelist()
  149. #这会生成一个文件列表:
  150. # ['file1.py', 'file2.py', 'file3.py', 'sub_dir/', 'sub_dir/bar.py', 'sub_dir/foo.py']
  151. # .namelist() 返回存档文件中文件和目录的名称列表。要检索有关存档文件中文件的信息,使用 .getinfo()
  152. # .getinfo() 返回一个 ZipInfo 对象,该对象存储有关存档文件的单个成员的信息。 要获取有关存档文件中文件的信息,请将其路径作为参数传递



  153. # 提取ZIP文件
  154. # zipfile 模块允许你通过 .extract() 和 .extractall() 从ZIP文件中提取一个或多个文件
  155. # 此处省略关于zip 文件的说明操作 用到时候百度



  156. # 读取多个文件
  157. # import fileinput
  158. # for line in fileinput.input()
  159. #     process(line)

复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表