Python之open()/OS
1.File对象数据读写与操作
# def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open # file: 操作的文件 # mode:打开这个文件的模式 ' r ' open for reading (default) 读取 - 默认值。打开文件进行读取,如果文件不存在则报错。 ' w ' open for writing, truncating the file first 写入 - 打开文件进行写入,如果文件不存在则创建该文件。 ' x ' create a new file and open it for writing 创建 - 创建指定的文件,如果文件存在则返回错误。 ' a ' open for writing, appending to the end of the file if it exists 追加 - 打开供追加的文件,如果不存在则创建该文件。 ' b ' binary mode 二进制模式 ' t ' text mode (default) 文本 - 默认值。文本模式。 ' + ' open a disk file for updating (reading and writing) 打开磁盘文件进行更新(读写) ' U ' universal newline mode (deprecated) 通用换行模式(已弃用)
#buffering:可选参数,用于指定对文件做读写操作时,是否使用缓冲区
#encoding:手动设定打开文件时所使用的编码格式,不同平台的 ecoding 参数值也不同,以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)
2.读取
file = open( " test0925.py " ) # 默认为r res = file.read() print (res) # def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open # file: 操作的文件 # mode:打开这个文件的模式
file = open( " test0925.py " , " r " ) # 默认为r res = file.read() print (res)
3.写入
# 写入 file = open( " test0925.py " , " w " ,encoding= " utf8 " ) # w写入,覆盖源文档的内容,乱码时添加encoding="utf8" file.write( " 测试 " )
4.追加
# 追加 file = open( " test0925.py " , " a " ,encoding= " utf8 " ) # w写入,覆盖源文档的内容,乱码时添加encoding="utf8" file.write( " aaaa " )
5.按行读取
# 按行读取 file = open( " test0925.py " , " r " ,encoding= " utf8 " )
read = file.readline() # 读取一行 print (read)
6.读取多行
# 全部读取 file = open( " test0925.py " , " r " ,encoding= " utf8 " )
reads = file.readlines() # 读取所有行 print (reads)
7.OS操作文件夹
文文件夹(目录)
7.1.绝对路径/相对路径
# 相对路径/绝对路径 第一种(绝对路径表示法):C:\FIle\file two
第二种(相对路径表示法):FIle two
7.2.新建目录
import os # 新建文件夹 os.mkdir( " Eclipse " ) #
7.3.跨级新建目录
import os # 跨级新建目录 os.mkdir( " Eclipse/US " ) # 跨级必须确保层级目录存在,相对路径
7.4.绝对路径新建目录
import os # 绝对路径新建目录 os.mkdir( " D:\\test_mkdir " ) # 绝对路径
7.5.删除目录
#目录不为空时删除失败
import os
#删除文件夹
os.remove( " demo.py " )
import os
#删除
os.rmdir( " m1/m2 " )
8.OS获取路径
8.1.获取当前工作目录
# 获取当前工作目录 import os
path = os.getcwd() print (path) # D:\File\python_project\demo\api
2.2.获取当前文件所在的绝对路径(具体到模块名)
# 获取当前文件所在的绝对路径 import os
realpath = os.path.realpath( __file__ )# __file__表示当前文件本身 print (realpath) # D:\File\python_project\demo\api\demo02.py
2.3.拼接路径 +
# 拼接路径 import os
new_path = os.getcwd()+ " \\m1\\m2 " # \\两个反斜杠可以,\一个反斜杠可以,/一个斜杠也可以 print (new_path) #打印新的绝对路径
2.4.拼接路径 join
# 路径拼接 import os
path = os.getcwd().join( " test02 " ) # 拼接 print (path)
file = os.path.join( " C/itt " , " ABC " )# ☆ ☆ ☆
print(file) #C /itt\ABC
2.5.判断是否为文件
# 判断文件 import os
path = os.path.isfile( __file__ ) # 判断是否为文件 print (path) # True path2 = os.path.isfile(os.getcwd()) # 判断当前路径是否为文件 print (path2) # False
2.6.判断是否为文件夹
# 判断文件夹 import os
path = os.path.isdir( __file__ ) # 判断当前绝对路径是否为文件夹 print (path) # False path2 = os.path.isdir(os.getcwd()) print (path2) # True
2.7.判断路径是否存在
# 判断路径是否存在 import os
bool = os.path.exists( " D://download " ) print (bool) # True
2.8.打印指定路径下所有文件和文件夹
# 罗列当前路径下所有的文件文件夹 import os
list_path = os.listdir( " C:\system_software\PyCharm 2019.1.3 " ) print (list_path) # ['bin', 'build.txt', 'debug-eggs', 'help', 'helpers', 'helpers-pro', 'index', 'jre64', 'lib', 'license', 'plugins', 'product-info.json', 'skeletons']
2.9.写一个函数,判断是否为目录,如果时目录罗列出所有的文件文件夹
# 写一个函数,判断是否为目录,如果时目录罗列出所有的文件文件夹 import os def path_list(path): if os.path.exists(path) and os.path.isdir(path):#判断是否为文件夹,是否存在 for item in (os.listdir(path)):#便利列表
new_path = path + " \\ " + item #使用join拼接: new_path = os.path.join(path,item) if os.path.isdir(new_path):#是否为文件夹 print ( " D:{0} " .format(new_path)) # 文件夹 elif os.path.isfile(new_path):#是否为文件 print ( " F:{0} " .format(new_path)) # 文件 else : print ( " 错误路径:{0} " .format(new_path))
path_list( " C:\system_software\PyCharm 2019.1.3 " )
输出:
D:C:\system_software\PyCharm 2019.1.3 \bin
F:C:\system_software\PyCharm 2019.1.3 \build.txt
D:C:\system_software\PyCharm 2019.1.3\debug- eggs
D:C:\system_software\PyCharm 2019.1.3 \help
D:C:\system_software\PyCharm 2019.1.3 \helpers
D:C:\system_software\PyCharm 2019.1.3\helpers- pro
D:C:\system_software\PyCharm 2019.1.3 \index
D:C:\system_software\PyCharm 2019.1.3 \jre64
D:C:\system_software\PyCharm 2019.1.3 \lib
D:C:\system_software\PyCharm 2019.1.3 \license
D:C:\system_software\PyCharm 2019.1.3 \plugins
F:C:\system_software\PyCharm 2019.1.3\product- info.json
D:C:\system_software\PyCharm 2019.1.3\skeletons
3.拓展(递归)
通过递归 获取指定路径下所有的文件文件夹,包括文件夹下的所有文件和文件夹
# 通过递归 获取指定路径下所有的文件文件夹,包括文件夹下的所有文件和文件夹 import os def aqual_path(path): # os.path.exists(path)#判断是否为路径 # os.path.isdir(path)#是否为一个文件夹 if os.path.exists(path) and os.path.isdir(path): # 若果是一个有效的文件夹,则获取当前路径下所有文件/文件夹 listss = os.listdir(path) for item in listss:
new_path = os.path.join(path,item) if os.path.isdir(new_path): print ( " D:{0} " .format(new_path))
aqual_path(new_path) # 递归,调用本函数 elif os.path.isfile(new_path): print ( " F:{0} " .format(new_path)) else : print ( " 无效:{0} " .format(new_path))
aqual_path( " E:\娱乐\电影集\China " )
输出:
D:E:\娱乐\电影集\China\林超贤导演
F:E:\娱乐\电影集\China\林超贤导演\红 &海& 行动.mp4
F:E:\娱乐\电影集\China\真三国无shuang. 2021 .HD.1080P.国粤双语中字.mkv
F:E:\娱乐\电影集\China\误杀2. 2021 .HD.1080P.国语中英双字.mkv
F:E:\娱乐\电影集\China\送你一朵小红hua.mkv
D:E:\娱乐\电影集\China\郭敬明导演
F:E:\娱乐\电影集\China\郭敬明导演\爵1迹1.mp4
F:E:\娱乐\电影集\China\郭敬明导演\爵1迹2:冷血狂宴.mp4
F:E:\娱乐\电影集\China\长津湖. 2021.BD.1080P.国语中字.mkv