xuming98 发表于 2024-8-7 15:23

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

wkdxz 发表于 2024-8-7 15:37

可以做几个测试文件,看看是否能调用成功。
如果成功,则VBS没问题,python有问题。
不成功,再逐步调试VBS


假设为ABCD四个文件,文件内容
import os
import time

script_name = os.path.basename(__file__)
print(f"当前脚本文件名:{script_name}")
print("程序将在5秒后退出...")

time.sleep(5)

xuming98 发表于 2024-8-7 15:55

wkdxz 发表于 2024-8-7 15:37
可以做几个测试文件,看看是否能调用成功。
如果成功,则VBS没问题,python有问题。
不成功,再逐步调试V ...

把这个代码做成py文件,改名为a.py,vbs调用还是一闪而过

qzwsa 发表于 2024-8-7 15:59

' 创建一个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

talentscj 发表于 2024-8-7 17:57

大佬66666

xuming98 发表于 2024-8-7 19:46

qzwsa 发表于 2024-8-7 15:59
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemOb ...

谢谢回复,报错
行23 字符9
对象不支持此属性或方法
800A01B6

lechao 发表于 2024-8-7 20:04

' 创建一个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

xuming98 发表于 2024-8-7 20:13

lechao 发表于 2024-8-7 20:04
' 创建一个FileSystemObject对象
Set fso = CreateObject("Scripting.FileSystemOb ...

谢谢回复,双击没任何反应

xuming98 发表于 2024-8-7 20:28

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

xuming98 发表于 2024-8-7 20:53

这个也是一闪而过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
查看完整版本: python里如何实现按照txt文本逐行顺序实现截屏点击