python-文件读写-OS-窗口控制

文件读写

读文件

过程:
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)

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值