python里如何实现按照txt文本逐行顺序实现截屏点击
本帖最后由 xuming98 于 2024-8-11 07:10 编辑目前有4个py文件分别是ABCD.py,用如下vbs实现目的,可以按顺序调出ABCD.py,但不执行py程序,只是窗口一闪而过,ABCD.py单独双击和右键打开测试均没有问题。怀疑vbs调用py文件有bug,
特向各位大师请教如何实现python程序按照1.txt文本顺序(逐行)每行一个字母A或B或C或D,分别调取同名.py?
vbs代码如下:' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemObject")
' 指定包含文件名列表的文本文件路径
textFilePath = "C:\Users\xm\Desktop\1.txt"
' 读取文件列表
Set textFile = fso.OpenTextFile(textFilePath, 1)
' 逐行处理
Do Until textFile.AtEndOfStream
line = textFile.ReadLine
' 构建.py文件的路径
pyFilePath = "C:\Users\xm\PycharmProjects\111\" & line & ".py"
' 检查文件是否存在
If fso.FileExists(pyFilePath) Then
' 使用默认程序打开.py文件
Set wshell = CreateObject("WScript.Shell")
command = "python.exe " & pyFilePath
wshell.Run command
Else
WScript.Echo "文件不存在: " & pyFilePath
End If
Loop
' 关闭文件
textFile.Close
' 清理对象
Set fso = Nothing
Set textFile = Nothing
Set wshell = Nothing
可以做几个测试文件,看看是否能调用成功。
如果成功,则VBS没问题,python有问题。
不成功,再逐步调试VBS
假设为ABCD四个文件,文件内容
import os
import time
script_name = os.path.basename(__file__)
print(f"当前脚本文件名:{script_name}")
print("程序将在5秒后退出...")
time.sleep(5) wkdxz 发表于 2024-8-7 15:37
可以做几个测试文件,看看是否能调用成功。
如果成功,则VBS没问题,python有问题。
不成功,再逐步调试V ...
把这个代码做成py文件,改名为a.py,vbs调用还是一闪而过
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemObject")
' 指定包含文件名列表的文本文件路径
textFilePath = "C:\Users\xm\Desktop\1.txt"
' 读取文件列表
Set textFile = fso.OpenTextFile(textFilePath, 1)
' 逐行处理
Do Until textFile.AtEndOfStream
line = textFile.ReadLine
' 构建.py文件的路径
pyFilePath = "C:\Users\xm\PycharmProjects\111\" & line & ".py"
' 检查文件是否存在
If fso.FileExists(pyFilePath) Then
' 使用WScript.Shell对象执行Python脚本并等待其完成
Set pythonProcess = CreateObject("WScript.Shell").Exec("python.exe " & pyFilePath)
' 等待Python脚本执行完毕
pythonProcess.WaitFor
' 如果需要,可以在这里处理Python脚本的输出
' pythonOutput = pythonProcess.StdOut.ReadAll()
' WScript.Echo "Python output: " & pythonOutput
Else
WScript.Echo "文件不存在: " & pyFilePath
End If
Loop
' 关闭文件
textFile.Close
' 清理对象
Set fso = Nothing
Set textFile = Nothing
Set pythonProcess = Nothing 大佬66666 qzwsa 发表于 2024-8-7 15:59
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemOb ...
谢谢回复,报错
行23 字符9
对象不支持此属性或方法
800A01B6
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemObject")
' 指定包含文件名列表的文本文件路径
textFilePath = "C:\Users\xm\Desktop\1.txt"
' 读取文件列表
Set textFile = fso.OpenTextFile(textFilePath, 1)
' 逐行处理
Do Until textFile.AtEndOfStream
line = textFile.ReadLine
' 构建.py文件的路径
pyFilePath = "C:\Users\xm\PycharmProjects\111\" & line & ".py"
' 检查文件是否存在
If fso.FileExists(pyFilePath) Then
' 使用默认程序打开.py文件,并等待其完成
Set wshell = CreateObject("WScript.Shell")
command = "python.exe " & pyFilePath
' 使用Wait参数让脚本等待命令执行完成
wshell.Run command, 0, True
Else
WScript.Echo "文件不存在: " & pyFilePath
End If
Loop
' 关闭文件
textFile.Close
' 清理对象
Set fso = Nothing
Set textFile = Nothing
Set wshell = Nothing lechao 发表于 2024-8-7 20:04
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemOb ...
谢谢回复,双击没任何反应 qzwsa 发表于 2024-8-7 15:59
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemOb ...
删除: ' 等待Python脚本执行完毕
pythonProcess.WaitFor
' 如果需要,可以在这里处理Python脚本的输出
' pythonOutput = pythonProcess.StdOut.ReadAll()
' WScript.Echo "Python output: " & pythonOutput
还是一闪而过,没有运行py 这个也是一闪而过Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("1.txt", 1) ' Open the file for reading
Do Until objTextFile.AtEndOfStream' Loop until the end of the file
strLine = objTextFile.ReadLine' Read a line from the file
If strLine <> "" Then' Check if the line is not empty
' Assuming the .py files are in the same directory as the .vbs script
CreateObject("WScript.Shell").Run "python " & strLine & ".py", 1, True
End If
Loop
objTextFile.Close' Close the file
页:
[1]
2