前情回顾 1. 基本命令 chmod df date shutdown ln 2. vi 编辑器 i o esc :wq :q! 3. 创建用户 useradd -> passwd -> vi /etc/sudoers -> vi /etc/passwd 4. 软件安装 sudo apt update sudo apt install sudo apt remove 5. ssh 远程链接 ssh tarena@172.40.45.25 scp file.txt tarena@172.40.45.25:/home/.. ssh-keygen-> 公钥 私钥 服务器记录公钥 : ~/.ssh/authorized_keys Linux操作系统环境使用 理论知识: 1. 操作系统的作用 2. Linux的操作系统特点和应用场景 掌握内容: 1. Linux 文件结构特点 2. Linux操作系统下文件位置的表达 实操内容: 1. Linux基础命令使用 (重点) 2. 常用Linux功能 压缩包处理 软件安装 用户创建 vi使用 3. 远程管理服务器 4. 服务端启动Python程序 熟练在Linux系统下进行开发工作和环境部署 《鸟哥私房菜 基础》 练习01: 使用dict.txt 完成 编写一个函数,参数传入一个单词,返回这个单词 的解释,如果单词不存在则返回 "Not Found" 注意: 每个单词一行 单词和解释之间有空格 单词按照从小到大排列 练习02: 编写一个函数,函数参数传入一个指定文件,执行 函数后,将该文件复制一份到当前程序运行目录下 注意: 指定文件: 可能是文本文件也可能是二进制文件 plus : 假设文件比较大,不要一次性读取 提示: 复制文件本质是从一个文件读取写入另一个文件 def copy(filename): pass 练习03 编写一个程序,循环的向文件 my.log 中写入 内容: (每次写一行,每次写入间隔2秒) 1. Tue Jun 1 17:25:47 2021 2. Tue Jun 1 17:25:49 2021 3. Tue Jun 1 17:25:51 2021 4. Tue Jun 1 17:29:18 2021 5. Tue Jun 1 17:29:20 2021 要求: 每行要实时的显示出来 当程序终止后,如果重新启动继续往下写 序号能够衔接 提示 :import time -> sleep(2) ctime() 作业 : 1. 先熟悉今天的函数 open read write 有一个列表,里面每一项都是一个文本文件位置 如: ["../day01/1.txt","../day02/2.txt"..] 请编写一个程序,将列表中的文件合并为1个大文件 命名为 union.txt
""" 使用dict.txt 完成 编写一个函数,参数传入一个单词,返回这个单词 的解释,如果单词不存在则返回 "Not Found" 注意: 每个单词一行 单词和解释之间有空格 单词按照从小到大排列 """ def query_word(word): file = open("dict.txt") # r 打开 # 每次取一行进行比对 for line in file: tmp = line.split(' ',1) # tmp->[word,xxx] if tmp[0] > word: break # 如果遍历的单词已经大于Word 就没必要找了 elif tmp[0] == word: return tmp[1].strip() # 去除字符串两侧的空格 return "Not Found" print(query_word("abc"))
""" 编写一个函数,函数参数传入一个指定文件,执行 函数后,将该文件复制一份到当前程序运行目录下 注意: 指定文件: 可能是文本文件也可能是二进制文件 plus : 假设文件比较大,不要一次性读取 提示: 复制文件本质是从一个文件读取写入另一个文件 """ def copy(filename): fr = open(filename,'rb') # 源文件 new = filename.split('/')[-1] # 取文件名 fw = open(new,'wb') # 边读边写 while True: data = fr.read(1024) if not data: break # 到了文件结尾 fw.write(data) fr.close() fw.close() copy("/home/tarena/下载/gyy.png")
""" 练习03 编写一个程序,循环的向文件 my.log 中写入 内容: (每次写一行,每次写入间隔2秒) 1. Tue Jun 1 17:25:47 2021 2. Tue Jun 1 17:25:49 2021 3. Tue Jun 1 17:25:51 2021 4. Tue Jun 1 17:29:18 2021 5. Tue Jun 1 17:29:20 2021 要求: 每行要实时的显示出来 当程序终止后,如果重新启动继续往下写 序号能够衔接 提示 :import time -> sleep(2) ctime() """ import time file = open("my.log",'a+',buffering=1) file.seek(0,0) # 文件偏移量到开头 # 序号 初始 = 行数 + 1 n = len(file.readlines()) + 1 while True: msg = "%d. %s\n"%(n,time.ctime()) file.write(msg) n += 1 # 序号增加 time.sleep(2) # 间隔2s
""" 文件读写缓冲 """ # 设置行缓冲 # file = open("file.txt",'w',buffering=1) # 设置缓冲大小 file = open("file.txt",'wb',buffering=10) while True: msg = input(">>") if not msg: break file.write(msg.encode()) # file.flush() # 刷新缓冲 file.close()
""" 字节串类型 是否所有字符串都能转换为字节串 是 是否所有字节串都能转换为字符串 不是 """ # 纯英文字符字节串 bytes1 = b"Hello world" print(type(bytes1)) # 非英文字符 使用encode()转换 bytes2 = "你好".encode() print(bytes2) # decode() 字节串--》字符串 print(bytes2.decode()) print(b'\xe4\xbd\xa1\xf3\xa3\xbd'.decode())
""" 打开文件 演示 """ # 读方式打开文件 # file = open("../day02/2.txt",'r') # 写打开 # file = open("file.txt",'w') # 自动创建/清空内容 # 追加方式 file = open("file.txt","a") # 操作文件 # 关闭 file.close()
""" 文件读取操作 演示 * 如果读取到了文件结尾继续读会返回空字串 """ # 读方式打开文件 # file = open("file.txt",'r') # 二进制读 file = open("file.txt",'rb') # 读取文件内容 data = file.read() print(data.decode()) # 每次读取一个字符,将整个文件读完并按照原格式打印 # while True: # data = file.read(1) # if data == "": # break # print(data,end="") # 按行读取 # line = file.readline() # print(line) # 读取多行内容 # lines = file.readlines(16) # print(lines) # 列表 每项是一行内容 # 迭代获取每行 # for line in file: # print(line) file.close()
""" 文件偏移量 """ # 打开文件 可读可写 file = open("file.txt","wb+") file.write(b"Hello Kitty\n") file.flush() print("文件偏移量:",file.tell()) # 操作文件偏移量 0 开头 1 当前 2 结尾 file.seek(-3,2) data = file.read() print(data) file.close()
""" with 语句块简单示例 """ with open("file.txt",'r') as file: data = file.read() print(data) # 语句块结束 file也会销毁
""" 文件写操作演示 """ # 写方式打开文件 file = open("file.txt",'wb') # file = open("file.txt",'a') # 追加打开 # 写入内容 file.write("hello,死鬼\n".encode()) n = file.write("哎呀,干啥\n".encode()) print(n) # data = [ # "六一快乐\n", # "今日躺平\n" # ] # # 将列表中的每一项分别写入 # file.writelines(data) file.close()