文件读写
读文件
过程:
1、 打开文件
2、 读文件内容
3、 关闭文件
1、打开文件
open(path, flag[, encoding] [, errors])
path: 要打开文件的路径
flag: 打开方式
r 以只读方式打开文件,文件描述符放在文件开头
rb 以二进制格式打开一个文件用于只读,文件描述符放在文件开头
r+ 打开一个文件用于读写,文件描述符放在文件开头
w 打开一个文件只用于写入,如果该文件已存在,会覆盖,如果不存在则创建新文件
wb 打开一个文件只用于写入二进制,如果该文件已存在,会覆盖,如果不存在,则创建新文件
w+ 打开一个文件用于读写,如果该文件已存在,会覆盖,如果不存在则创建新文件
a 打开一个文件用于追加,如果文件存在,文件描述符将会放到文件末尾
a+ 打开一个文件用于追加
encoding: 编码方式 utf-8/gbk
errors: 错误处理
path = r“C:\Users\89460\Documents\PythonData\pythonfile.txt” #加扩展名
f = open(path, “r”[, encoding = “utf-8”, errors = “ignore”])
2、读文件内容
#1、读取文件全部内容
str1 = f.read()
print(str1)
#2、读取指定字符数
str2 = f.read(10)
print(“*” + str2 + “*”)
str3 = f.read(10)
print(“*” + str3 + “*”)
#3、读取整行,包括"\n"
str4 = f.readline()
print(str4)
str5 = f.readline()
print(str5)
#4、读取指定字符数
str6 = f.readline(10)
print(str6)
#5、读取所有行并返回列表
list7 = f.readlines()
print(list7)
#6、若给定数字大于0,返回实际size字节的行数
list7 = f.readlines(21)
print(list7)
#修改描述符的位置
f.seek(0) #0\10\20
3、关闭文件
f.close()
#一个完整的过程
try:
f1 = open(path, “r”, encoding = “utf-8”)
print(f1.read())
finally:
if f1:
f1.close()
#自动关闭文件
with open(path, “r”, encoding = “utf-8”) as f2:
print(f2.read())
写文件
path = r" C:\Users\89460\Documents\PythonData\pythonfile.txt"
f = open(path, "w")
#写文件
1、将信息写入缓冲区
f.write("good good study")
2、刷新缓冲区
#直接把内部缓冲区的数据立刻写入文件,而不是被动等待自动刷新写入
f.flush()
while True:
pass
f.close()
with open(path, "a") as f2:
f2.write("good man")
编码与解码
编码
path = r”C:\Users\89460\Documents\PythonData\pythonfile.txt”
with open(path, “wb”) as f1:
str = “sunck is a good man”
f1.write(str.encode(“utf-8”))
with open(path, “rb”, encoding = “utf-8”, errors = “ignore”) as f2:
data = f2.read()
print(data)
print(type(data))
newData = data.decode(“utf-8”) #gbk
print(newData)
print(type(newData))
list\tuple\dict\set的文件操作
import pickle #数据持久性模块
myList = [1,2,3,4,5, “sunck”]
path = r”C:\Users\89460\Documents\PythonData\pythonfile.txt”
f = open(path, “wb”)
pickle.dump(myList, f)
f.close()
#读取
f1 = open(path, “rb”)
tempList = pickle.load(f1)
print(tempList)
f1.close()
os模块
OS:包含了普遍的操作系统的功能
import os
#获取操作系统类型 nt->windows posix->Linux、Unix或Mac OS X
print(os.name)
#打印操作系统详细信息(windows不支持)
print(os.uname)
#获取操作系统的环境变量
print(os.environ)
#获取指定环境变量
print(os.environ.get(“APPDATA”))
#修改环境变量
#获取当前目录
print(os.curdir)
#获取当前工作目录,即当前python脚本所在的目录
print(os.getcwd())
#以列表的形式返回指定目录下所有文件
print(os.listdir(r”路径”))
#在当前目录下创建新目录
os.mkdir(“sunck”)
#删除目录
os.rmdir(“相对/绝对路径”)
#获取文件属性
print(os.stat())
#重命名
os.rename(“sunck”, “kaige”) #(old, new)
#删除普通文件
os.remove(“file1.txt”)
#运行shell命令
os.system(“notepad”)
os.system(“write”)
os.system(“shutdown -s -t 500”) #注销关机
os.system(“shutdown -a”) #取消关机
os.system(“taskkill /f /im notepad.exe”)
#有些方法存在os模块里,还有些存在于os.path
#查看当前的绝对路径
print(os.path.abspath(“.”))
#拼接路径
p1 = r””
p2 = “”
#注意:参数2里开始不要有斜杠
print(os.path.join(p1, p2))
p3 = “/root/sunck/home”
p4 = “kaige”
#/root/sunck/home/kaige
print(os.path.join(p3, p4))
#拆分路径
path2 = “”
print(os.path.split(path2))
#获取扩展名
print(os.path.splitext(path2))
#判断是否是目录
print(os.path.isdir(path2))
#判断文件是否存在
print(os.path.isfile(path2))
#判断目录是否存在
print(os.path.exists(path))
#获得文件大小(字节)
print(os.path.getsize(path))
#文件的目录
print(os.path.dirname(path))
print(os.path.basename(path))
窗口控制
import win32con #安装库pywin32, spy窗口
import win32gui
import time
import random
1、控制窗体的显示和隐藏
#找出窗体的编号
QQWin = win32gui.FindWindow(“类”, “标题”)
time.sleep(2)
#显示/隐藏窗体
win32gui.ShowWindow(QQwin, win32con.SW_SHOW) #HIDE
2、控制窗体的位置和大小
#找出窗体的编号
QQWin = win32gui.FindWindow(“类”, “标题”)
#参数1:控制的窗体
#参数2:大致方位
#参数3:位置X
#参数4:位置Y
#参数5:长度
#参数6:宽度
while True
x = random.randrange(900)
y = random.randrange(600)
win32gui.SetWindowPos(QQWin, win32con.HWND_TOPMOST, 100, 100, 300, 300, win32con.SWP_SHOWWINDOW)
语音合成
#系统客户端
import win32com.client
speaker = win32com.client.Dispatch(“SAPI.SPVOICE”)
speaker.Speak(“hdsi ei lsldk dk”)
while 1:
time.sleep(5)
speaker.Speak(“hdsi ei lsldk dk”)
内存修改
#进程模块
import wi32process
#系统
import win32gui
import win32api
import ctypes
PROCESS_ALL_ACCESS = (0x000F0000|0x00100000|0xFFF) #位运算
#找窗体
win32 = win32gui.FindWindow(“MainWindow”, “植物大战僵尸”)
#根据窗体找到进程号
hid, pid = win32process.GetWindowThreadProcessID(win)
#以最高权限打开进程
p = win32api.OpenProcess(PROCESS_ALL_ACCESS, False, pid)
data = ctypes.c_long()
#加载内核模块
md = atypes.windll.LoadLibrary(“C:\\Windows\\System32\\ kernel32”)
#读取内存
md.ReadProcessMemory(int(p), &neicun, ctypes.byref(data), 4, None)
print(“data =”, data)
#新值
newData = ctypes.c_long(10000)
#修改
md.WriteProcessMemory(int(p), &neicun, ctypes.byref(newData), 4, None)