如何在与子进程相同的目录中用python调用脚本?

2024-06-16 14:24:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在Windows 10中使用python 3(我是管理员)和pycharm打开子进程所在目录中的脚本,但是我尝试的任何替代解决方案都会出现以下错误:

这是我的密码:

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实现这个脚本吗


Tags: thepy脚本is管理员错误callusers
2条回答

在脚本之前添加python,所以不要

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

使用

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

确保设置了PYTHONPATH环境变量

您需要提供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

相关问题 更多 >