如何在带有子进程的同一目录中使用python调用脚本?

时间:2019-07-18 10:27:32

标签: python subprocess

我正在尝试在Windows 10中使用python 3从同一目录中打开带有子进程的脚本(我是管理员),并使用pycharm,但是我尝试的任何替代解决方案都遇到以下错误:< / p>

这是我的代码:

import subprocess
subprocess.call(['C:\\Users\\CobraCommander\\PycharmProjects\\BlackBox', 'Avalon.py'])  # The above "BlackBox" it's the directory for both files.

与此相关的是以下错误:

PermissionError: [WinError 5] Access is denied

如果我尝试:

subprocess.call(['python Avalon.py'])

与此相关的是以下错误:

FileNotFoundError: [WinError 2] The system cannot find the file specified

所以我尝试了:

subprocess.call(['C:\\Users\\CobraCommander\\PycharmProjects\\BlackBox\\Avalon.py'])

与此相关的是以下错误:

OSError: [WinError 193] %1 is not a valid Win32 application

我还试图从终端以管理员身份运行,并得到相同的错误:

PermissionError: [WinError 5] Access is denied

在尝试将其标记为重复之前,请注意,我已经阅读了其他文章中的错误以及子流程。

有人可以建议如何在另一个脚本中用python编写该脚本吗?

2 个答案:

答案 0 :(得分:1)

您需要提供cwd参数来设置工作目录:

https://docs.python.org/3/library/subprocess.html#subprocess.call

import subprocess

if __name__ == '__main__':
    subprocess.run(r'touch d:\test.txt')
    p = subprocess.run(r'ls -la test.txt', cwd=r'd:\\', stdout=subprocess.PIPE)
    print(p.stdout.decode())

输出:

-rw-r--r-- 1 abdusco 197609 0 Jul 18 13:32 test.txt

答案 1 :(得分:1)

在脚本之前添加python,而不是

subprocess.call(['C:\\Users\\CobraCommander\\PycharmProjects\\BlackBox\\Avalon.py'])

使用

subprocess.call(['python', 'C:\\Users\\CobraCommander\\PycharmProjects\\BlackBox\\Avalon.py'])

确保已设置PYTHONPATH环境变量。