如何将 pathlib 与子进程一起使用
How to use pathlib along with subprocess
我想将相对路径与子进程模块一起使用,以便能够 运行 不同的可执行文件。
为了获取相对路径,在阅读了不同的线程之后,我认为 pathlib 模块是最好的选择。
假设我在 Windows 的特定文件夹中有 python 脚本。在其中(前一个文件夹),我还有其他文件夹,其中包含我想要 运行 的可执行文件。这是 subprocess 模块进来的时候。但是,我不知道如何将使用 pathlib 模块创建的相对路径包含到 subprocess args 字段中。
从子进程 API 我可以读到 'args should be a sequence of program arguments or else a single string'。
import pathlib
import subprocess
in_file_1 = pathlib.Path.cwd() / "folder2" / "folder3" / "whatever.exe"
p = subprocess.Popen(str(in_file_1), shell = True)
我希望在管理员任务上看到 whatever.exe 进程 运行ning,但该进程尚未启动。我怎样才能做到这一点?有什么我正在接受的吗?我应该只给出保存 python 脚本的相对路径吗?
您混淆了 current working directory,即 pathlib.Path.cwd()
return 与脚本的位置。
如果你想要脚本的目录,你可以使用__file__
,例如像这样:
import pathlib
cwd = pathlib.Path.cwd()
script_file = pathlib.Path(__file__)
script_location = script_file.parent
print("The current dir is", pathlib.Path.cwd())
print("The current script is", script_file)
print("The current script's dir is", script_file.parent)
这将 return:
The current dir is /home/nicoco
The current script is /tmp/so.py
The current script's dir is /tmp
我想将相对路径与子进程模块一起使用,以便能够 运行 不同的可执行文件。
为了获取相对路径,在阅读了不同的线程之后,我认为 pathlib 模块是最好的选择。
假设我在 Windows 的特定文件夹中有 python 脚本。在其中(前一个文件夹),我还有其他文件夹,其中包含我想要 运行 的可执行文件。这是 subprocess 模块进来的时候。但是,我不知道如何将使用 pathlib 模块创建的相对路径包含到 subprocess args 字段中。
从子进程 API 我可以读到 'args should be a sequence of program arguments or else a single string'。
import pathlib
import subprocess
in_file_1 = pathlib.Path.cwd() / "folder2" / "folder3" / "whatever.exe"
p = subprocess.Popen(str(in_file_1), shell = True)
我希望在管理员任务上看到 whatever.exe 进程 运行ning,但该进程尚未启动。我怎样才能做到这一点?有什么我正在接受的吗?我应该只给出保存 python 脚本的相对路径吗?
您混淆了 current working directory,即 pathlib.Path.cwd()
return 与脚本的位置。
如果你想要脚本的目录,你可以使用__file__
,例如像这样:
import pathlib
cwd = pathlib.Path.cwd()
script_file = pathlib.Path(__file__)
script_location = script_file.parent
print("The current dir is", pathlib.Path.cwd())
print("The current script is", script_file)
print("The current script's dir is", script_file.parent)
这将 return:
The current dir is /home/nicoco
The current script is /tmp/so.py
The current script's dir is /tmp