Python第十六节课
本节内容
文件操作
# 打开文件 # 我们使用内置的open()函数将一个文件打开 # 语法格式为:open(filename[, mode]) # filename表示文件的名称,mode表示文件的模式 # 模式默认是只读模式(r) # 如果文件原来已经存在,那么不需要指定模式 # 但是如果文件原来并不存在,那么需要指定模式w # 模式有: # r rb r+ rb+ # 分别表示只读,二进制只读,可读可写,二进制可读可写 # w wb w+ wb+ # 分别表示只写,二进制只写,可读可写,二进制可读可写 # a ab a+ ab+ # 分别表示追加,二进制追加,可读可写,二进制可读可写
# 文件的属性 # 在文件打开的前提下,我们可以查看文件的属性 # file.name 文件的名称 # file.mode 文件的权限 # file.closed 文件是否关闭 # 关闭文件 # file.close() 文件在执行之后,必须关闭,提高文件的安全性
# 写入文件 # file.write(str) 文件在写入的时候,一定要在打开文件的时候提前给写入的权限,str就是写进去的内容。
# 读取文件 # file.read([count]) # 在读取文件的时候,我们可以指定读取的字符count # 如果,没有指定读取字符的时候,默认是全部读取
# 定位与移动 # file.tell() 返回当前光标所在的位置 # file.seek(count, from) 移动光标,count表示移动的位置 # from表示移动的参照,0表示从头开始 # 1表示从当前位置移动, 2表示从末尾移动
# with关键词 # 语法格式: with open('a.txt') as f: f.write() .... # 其中with语句是需要些f.close的,会自动关闭文件
练习:
01、在没有创建文件a.txt的前提下,打开文件a.txt
在文件中写入内容:xiao zhu peiqi 666
查看文件是否关闭,如果未关闭,将文件关闭
02、使用with语句再次完善上述问题
注:没有创建a.txt文件,代表本身存在。
def test(): file = open('a.txt', 'w+') file.write('xiao zhu peiqi 666') if file.closed: print("已关闭!文件") else: print("文件未关闭!正在关闭") file.close() # test() def test1(): with open('a.txt', 'w+') as f: a = 'xiao zhu peiqi 666' # f.tell() # f.seek(0, 1) f.write(a) if f.closed: print("已关闭!文件") else: print("文件未关闭!正在关闭") f.close() # test1()
OS模块
创建目录
# 创建一级目录 os.mkdir(name) # name 就是目录名称 # 创建多级目录 os.makedirs(name1/name2/name3) # 可以创建多级目录
切换目录
os.chdir(name) # 切换到指定的目录下
查看当前位置
os.getcwd() # 返回当前所在的位置,绝对路径
删除目录和文件
# 删除文件 os.remove(name) # name 为文件的名称 # 删除目录 os.removedirs(name1/name2/name3) # 删除多级目录
练习:
判断是不是在window下,如果在windows下则进行以下操作
创建一个多级目录demo01/demo02/demo03
在demo03下,创建一个文件a.txt
在demo02下,创建一个文件b.txt
将a.txt改名为one.txt
并写入’this is one.txt file’
在目录demo03下,创建一个新的目录,demo04
打印出当前的位置,并且在demo04中创建文件c.txt
将文件b.txt 删除掉def test2(): if os.name == 'nt': print("处于 windows 系统下---") path_name = os.getcwd() print(path_name) os.makedirs('demo01/demo02/demo03') os.chdir('E:\project-s\python开发课\day16\demo01\demo02') open('b.txt', 'w+') os.chdir('E:\project-s\python开发课\day16\demo01\demo02\demo03') open('a.txt', 'w+') os.rename('a.txt', 'one.txt') with open('one.txt', "w+") as f: f.write('this is one.txt file') os.chdir('E:\project-s\python开发课\day16\demo01\demo02\demo03') os.mkdir('demo04') os.chdir('demo04') os.getcwd() open('c.txt', 'w+') os.chdir('E:\project-s\python开发课\day16\demo01\demo02') os.remove('b.txt') else: print("处于 linux 系统下---") test2()
平台相关信息的获取
操作系统的种类
os.name # nt 表示windows # posix 表示linux
操作系统的分隔符
os.seq()
路径
os.path.isfile(文件名称) 判断是否是文件 os.path.isdir(目录文件) 判断是否是目录 os.path.split("绝对路径") 将绝对路径进行分割 os.path.join("字符串") 将字符串链接成完整路径
作业:
在一个主目录下,创建多个文件夹,每个文件夹下创建10个txt文件。
本题是运维工程师面试题~
多个文件夹名称可自定义,面试为[‘apacher’, ‘html’, ‘android’, ‘app’, ‘ios’, ‘nginx’, ‘tomcat’, ‘python’]
# 参考方法 def file_tree(path): a = ['物联网', 'AI', 'matplotlib', 'anaconde', 'NLP', 'lua'] for i in a: os.chdir(path) os.mkdir(i) z = 0 os.chdir(path + f"//{i}") while z <= 10: z += 1 now = datetime.datetime.now().date() result = now - datetime.timedelta(days=z) open(f'{result.strftime("%Y-%m-%d")}.txt', 'w+') file_tree('E://sample')