有没有一种简单的方法可以在 Windows/Linux/OS X 上运行 Python 脚本?
在后两者上subprocess.Popen("/the/script.py")
有效,但在 Windows 上出现以下错误:
Traceback (most recent call last):
File "test_functional.py", line 91, in test_functional
log = tvnamerifiy(tmp)
File "test_functional.py", line 49, in tvnamerifiy
stdout = PIPE
File "C:\Python26\lib\subprocess.py", line 595, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 804, in _execute_child
startupinfo)
WindowsError: [Error 193] %1 is not a valid Win32 application
蒙库特的评论:用例不清楚。为什么要使用 subprocess 来运行 python 脚本?是否有什么东西阻止您导入脚本并调用必要的函数?
我正在编写一个快速脚本来测试 Python 命令行工具的整体功能(在各种平台上进行测试)。基本上它必须在一个临时文件夹中创建一堆文件,在这个文件夹上运行脚本并检查文件是否被正确重命名。
我本可以导入脚本并调用该函数,但由于它依赖sys.argv
并使用sys.exit()
,我需要执行类似..
import sys
import tvnamer
sys.argv.append("-b", "/the/folder")
try:
tvnamer.main()
except BaseException, errormsg:
print type(errormsg)
另外,我想捕获 stdout 和 stderr 以进行调试,以防出现问题。
当然,更好的方法是以更可单元测试的方式编写脚本,但脚本基本上是“完成”的,我正在做最后一批测试,然后再发布“1.0”版本(之后我要去进行重写/重组,这将更加整洁和可测试)
基本上,在找到sys.executable
变量后,将脚本作为一个进程简单地运行要容易得多。我会把它写成一个 shell 脚本,但这不会是跨平台的。最终脚本可以在这里找到