我在使用某些VB脚本时遇到了问题 - 看起来似乎并不是很难解决,但即使在浏览了很多页面之后我还没有找到解决方案。
这是我的python文件(test.py),简化为只显示问题:
f = open("testing.txt", 'w')
f.write("oh hai\n")
f.close()
当然,直接从命令行运行时,会生成您期望的文件。
然而,在一个简单的.vbs脚本中运行时(警告:我的vbs技能缺乏。这可能就是我遇到问题的原因。到目前为止,我没有遇到过很多问题,除了讨厌使用XP到代码,当我习惯使用vim时)
Set WshShell = WScript.CreateObject("WScript.Shell")
cmd = "C:\Python27\python test.py"
WshShell.Run cmd
没有生成输出文件!一点都没!这真是令人愤怒,因为当我从开始菜单输入确切的命令("C:\Python27\python test.py"
)到运行程序时,它就可以了!
在工作中,所以他们在Windows XP上。其他一切都非常标准,或者让我相信。
编辑:将“C:\ Python27 \ testing.py”更改为“testing.py”。这是在我试图解决它时遗留下来的,并且认为它可能是将文件放在目标文件夹之外的某个位置。
答案 0 :(得分:2)
首先,你的Python脚本看起来很可疑,我怀疑反斜杠在一个简单的字符串中工作。至少,在我的测试中,它没有用,我只是用正斜杠替换它们。
接下来,您可以通过在cmd /k
前面添加cmd来查看错误消息,运行窗口仍保留在屏幕上。您可以看到找不到.py文件,因为它不在当前目录中。您必须指定此文件的绝对路径,方法是从脚本中获取当前路径。
[编辑]我终于得到了一个有效的代码(我的VBS有点生锈......)
Dim wshShell, fso, loc, cmd
Set fso = CreateObject("Scripting.FileSystemObject")
loc = fso.GetAbsolutePathName(".")
WScript.Echo loc
'~ cmd = "%ComSpec% /k C:\Languages\Python\python.exe " + loc + "\test.py"
cmd = "C:\Languages\Python\python.exe " + loc + "\test.py"
WScript.Echo cmd
Set wshShell = CreateObject("WScript.Shell")
wshShell.Run cmd
如果提供了路径,您还可以检查参数:
if WScript.Arguments.Count = 0 then
loc = fso.GetAbsolutePathName(".")
else
loc = WScript.Arguments(0)
end if
使用cscript而不是默认的wscript可以更好地运行这样的脚本。
答案 1 :(得分:0)
尝试
f = open("C:\\Python27\\testing.txt", 'w')
而不是你的第一行。