|
- # # This is a sample Python script.
- #
- # # Press Shift+F10 to execute it or replace it with your code.
- # # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
- #
- #
- # def print_hi(name):
- # # Use a breakpoint in the code line below to debug your script.
- # print(f'Hi, {name}') # Press Ctrl+F8 to toggle the breakpoint.
- #
- #
- # # Press the green button in the gutter to run the script.
- # if __name__ == '__main__':
- # print_hi('PyCharm_main')
- #
- # # See PyCharm help at https://www.jetbrains.com/help/pycharm/
- #
- # 参考文献
- # https://zhuanlan.zhihu.com/p/56909212
- # 新建一个文件 写入
- with open('da.txt','w') as f:
- data = 'cbd'
- f.write(data)
- # 读取只读
- with open('da.txt','r') as f:
- data = f.read()
- print('context:{}'.format(data))
- # 获取文件目录列表 【老版本 可以忽略】
- import os
- entrice = os.listdir('venv')
- print(entrice)
- # ['.gitignore', 'Lib', 'pyvenv.cfg', 'Scripts']
- for i in entrice:
- print(i)
- with os.scandir('venv') as v:
- for i in v :
- print(i)
- # 新版本
- # 1.使用 scandir() 不用 用下面的path
- # dc = os.scandir('venv')
- # print(dc) #返回的是一个迭代器
- # is_file 判断是不是文件
- # is_dir() 判断是不是目录
- # .stat() 获取文件的详细属性 提供了例如文件大小和最后修改时间的信息 st_mtime(更新时间等)
- with os.scandir('venv') as dc:
- for v in dc:
- if v.is_file():
- print('这是文件'+v.name)
- print('这个文件的修改时间是{}'.format(v.stat().st_mtime) )
- elif v.is_dir():
- print('这是目录'+v.name)
- else:
- print('这是啥')
- # print('目录名称是{}'.format(v))
- # 2. 使用pthlib 模块获取目录
- # pathlib.Path() 返回的是 PosixPath 或 WindowsPath 对象,这取决于操作系统。
- # pathlib.Path() 对象有一个 .iterdir() 的方法用于创建一个迭代器包含该目录下所有文件和目录。由 .iterdir() 生成的每个条目都包含文件或目录的信息
- # 调用 pathlib.Path() 并传入了一个路径参数。然后调用 .iterdir() 来获取 my_directory 下的所有文件和目录列表。
- from pathlib import Path
- dm = Path('venv')
- for v in dm.iterdir():
- if v.is_file():
- print('Path这是文件' + v.name)
- elif v.is_dir():
- print('Path这是目录' + v.name)
- else:
- print('Path这是啥?')
- # 创建目录
- # 如果目录已经存在 则抛出异常
- # os.mkdir('laomo3')
- # 如果目录已经存在 则抛出异常
- # p = Path('laomo2')
- # p.mkdir()
- # 捕获文件重复的异常
- p = Path('laomo2/vcm')
- # try:
- # p.mkdir()
- # except FileExistsError as e:
- # print(e)
- # [WinError 183]当文件已存在时,无法创建该文件。: 'laomo2'
- # 处理异常(忽略异常) mkdir() 传入 exist_ok=True 参数来忽略 FileExistsError 异常:如果目录已存在,则不会引起错误。
- p.mkdir(exist_ok=True)
- # 创建一组文件夹
- os.makedirs('laomo1/2012/02/02',mode=0o770, exist_ok=True)
- # 创建一组文件夹 默认的模式为 0o777
- m = Path('laomo2/2012/02/02')
- m.mkdir(parents=True, exist_ok=True)
- # 文件名模式匹配(就是文件搜索 )
- # endswith() 和 startswith() 字符串方法
- # fnmatch.fnmatch()
- # glob.glob()
- # pathlib.Path.glob()
- # 遍历目录和处理文件 os.walk() 来实现这一功能
- # 创建临时文件和目录
- # tempfile 模块来便捷的创建临时文件和目录
- # tempfile 可以在你程序运行时打开并存储临时的数据在文件或目录中。 tempfile 会在你程序停止运行后删除这些临时文件。
- from tempfile import TemporaryFile
- # 创建一个临时文件并为其写入一些数据
- # 模式为 w + t,这使得 tempfile 在写入模式下创建临时文本文件。 没有必要为临时文件提供文件名,因为在脚本运行完毕后它将被销毁。
- fp = TemporaryFile('w+t')
- fp.write('Hello World!')
- # 回到开始,从文件中读取数据
- fp.seek(0)
- data = fp.read()
- print(data)
- # 关闭文件,之后他将会被删除
- fp.close()
- # .TemporaryFile() 也是一个上下文管理器,因此它可以与with语句一起使用。 使用上下文管理器会在读取文件后自动关闭和删除文件
- # with TemporaryFile('w+t') as fp:
- # fp.write('Hello universe!')
- # fp.seek(0)
- # fp.read()
- # 临时文件现在已经被关闭和删除
- # 删除文件和目录
- # 可以使用 os,shutil 和 pathlib 模块中的方法删除单个文件,目录和整个目录树。
- # 要删除单个文件(只能删文件不能删目录),请使用
- # pathlib.Path.unlink(),
- # os.remove() 或 os.unlink()。
- # os.remove('da.txt')
- # 删除目录 #如果目录不为空 则抛出错误
- # os.rmdir()
- # pathlib.Path.rmdir()
- # shutil.rmtree()
- # os.rmdir('laomo2')
- # OSError: [WinError 145] 目录不是空的。: 'laomo2'
- # 删除完整的目录树
- # shutil.rmtree()
- import shutil
- # shutil.rmtree('laomo1')
- # 复制、移动和重命名文件和目录
- # 最常用的函数是
- # shutil.copy() 复制单个文件 将文件从一个位置复制到另一个位置 不保留相关信息
- # shutil.copy2() 复制单个文件 将文件从一个位置复制到另一个位置 保留相关信息 例如更新时间不变
- # shutil.copytree(src,dest) 复制整个目录及其中包含的所有内容
- # src = 'path/to/file.txt'
- # dst = 'path/to/dest_dir'
- # shutil.copy(src, dst)
- # 移动文件和目录
- # shutil.move(src,dst) # src 是要移动的文件或目录,dst 是目标:
- # 重命名文件和目录
- # os.rename(src,dst)
- # pathlib 模块中的 rename()
- # ===归档压缩
- # 读取ZIP文件
- # import zipfile
- #
- # with zipfile.ZipFile('data.zip', 'r') as zipobj:
- # zipobj.namelist()
- #这会生成一个文件列表:
- # ['file1.py', 'file2.py', 'file3.py', 'sub_dir/', 'sub_dir/bar.py', 'sub_dir/foo.py']
- # .namelist() 返回存档文件中文件和目录的名称列表。要检索有关存档文件中文件的信息,使用 .getinfo()
- # .getinfo() 返回一个 ZipInfo 对象,该对象存储有关存档文件的单个成员的信息。 要获取有关存档文件中文件的信息,请将其路径作为参数传递
- # 提取ZIP文件
- # zipfile 模块允许你通过 .extract() 和 .extractall() 从ZIP文件中提取一个或多个文件
- # 此处省略关于zip 文件的说明操作 用到时候百度
- # 读取多个文件
- # import fileinput
- # for line in fileinput.input()
- # process(line)
复制代码 |
|