11)suprocess模块

这篇博客展示了如何使用Python的subprocess模块进行命令行管道操作,例如通过ls和grep命令查找指定目录下的txt文件。在Unix环境下,它演示了ls与grep的结合使用,而在Windows下则是dir与findstr的组合。此代码片段对于理解如何在Python中交互式地执行系统命令和处理输出流非常有帮助。
摘要由CSDN通过智能技术生成
import  subprocess

'''
sh-3.2# ls /Users/egon/Desktop |grep txt$
mysql.txt
tt.txt
事物.txt
'''

res1=subprocess.Popen('ls /Users/jieli/Desktop',shell=True,stdout=subprocess.PIPE)
res=subprocess.Popen('grep txt$',shell=True,stdin=res1.stdout,
                 stdout=subprocess.PIPE)

print(res.stdout.read().decode('utf-8'))


#等同于上面,但是上面的优势在于,一个数据流可以和另外一个数据流交互,可以通过爬虫得到结果然后交给grep
res1=subprocess.Popen('ls /Users/jieli/Desktop |grep txt$',shell=True,stdout=subprocess.PIPE)
print(res1.stdout.read().decode('utf-8'))


#windows下:
# dir | findstr 'test*'
# dir | findstr 'txt$'
import subprocess
res1=subprocess.Popen(r'dir C:\Users\Administrator\PycharmProjects\test\函数备课',shell=True,stdout=subprocess.PIPE)
res=subprocess.Popen('findstr test*',shell=True,stdin=res1.stdout,
                 stdout=subprocess.PIPE)

print(res.stdout.read().decode('gbk')) #subprocess使用当前系统默认编码,得到结果为bytes类型,在windows下需要用gbk解码

 

Shizuku 是一个 Android 上的 Root 权限管理工具,可以让用户以非特权用户身份运行需要 Root 权限的应用程序。在 Auto.js 中使用 Shizuku 可以让你的脚本获得 Root 权限,从而执行一些需要 Root 权限才能完成的操作。 以下是在 Auto.js 中使用 Shizuku 的步骤: 1. 在手机上安装 Shizuku。你可以从官方网站(https://shizuku.rikka.app/)下载 APK 文件并安装。 2. 在你的脚本中导入 shizuku 模块。你可以使用以下代码: ```javascript var shizuku = storages.create("shizuku"); var suProcess = null; var suOutputStream = null; var suInputStream = null; if (!shizuku.contains("service")) { shizuku.put("service", "shizuku"); } if (!shizuku.contains("package")) { shizuku.put("package", "moe.shizuku.privileged.api"); } if (!shizuku.contains("version")) { shizuku.put("version", 3); } var serviceIntent = new Intent(); serviceIntent.setComponent(new ComponentName(shizuku.get("package"), "moe.shizuku.api.ShizukuApiService")); serviceIntent.putExtra("version", shizuku.get("version")); context.startService(serviceIntent); while (!context.getSystemService("statusbar").expandNotificationsPanel()) { sleep(100); } var shizukuApi = null; while (shizukuApi == null) { shizukuApi = Java.use("moe.shizuku.api.ShizukuApi").getInstance(); sleep(100); } var suExecutor = shizukuApi.newProcessBuilder().command(["su"]).start(); suProcess = suExecutor.process(); suOutputStream = suProcess.getOutputStream(); suInputStream = suProcess.getInputStream(); function executeCommand(command) { suOutputStream.write(command.concat("\n").getBytes()); suOutputStream.flush(); var bufferedReader = new BufferedReader(new InputStreamReader(suInputStream)); var output = ""; while (true) { var line = bufferedReader.readLine(); if (line == null) { break; } output += line + "\n"; } return output; } ``` 3. 在你的脚本中使用 `executeCommand` 函数来执行需要 Root 权限的命令。例如,以下代码可以让你获取 /data/data/com.example.app 目录下的所有文件列表: ```javascript var result = executeCommand("ls /data/data/com.example.app"); toastLog(result); ``` 请注意,使用 Shizuku 需要你的手机已经获取了 Root 权限。此外,使用 Shizuku 执行命令的速度可能比直接在终端中执行要慢一些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值