首页 > 解决方案 > 如何在与子进程相同的目录中使用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 午餐这个脚本吗?

标签: pythonsubprocess

解决方案


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

推荐阅读