python 子进程 popen 将主目录设置为 cwd

荔枝

我有一个小问题。我在 ubuntu 16.04 机器上,在 python 脚本中,我想启动一个子进程,该子进程应该在用户的主目录中启动。我试过:

subprocess.Popen('echo "Test"', cwd="~", shell=True,universal_newlines=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, executable="/bin/bash")

但是当我这样做时,我收到以下错误:

 proc = subprocess.Popen('echo "test"', cwd="~", shell=True,universal_newlines=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, executable="/bin/bash")
  File "/usr/lib/python3.5/subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '~'

我不确定我做错了什么,因为当您在 cd 命令中输入 ~ 时,它会将您转到主目录。我希望有人有一个解决方案,为什么它不能以这种方式工作,以及在主目录中启动它的正确方法是什么。

FHTMitchell

为了清楚起见,我简化了您的代码。


使用 Python 3.6 或更高版本,您可以执行以下操作:

import subprocess, pathlib
subprocess.Popen(['echo',  'test'], cwd=pathlib.Path.home())

使用 Python 3.5,您需要包装Path.home()str()

import subprocess, pathlib
subprocess.Popen(['echo',  'test'], cwd=str(pathlib.Path.home()))

对于低于 3.5 的任何 Python 版本,您可以使用:

import os, subprocess
subprocess.Popen(['echo',  'test'], cwd=os.path.expanduser('~'))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将参数传递给Python子进程.Popen

来自分类Dev

Python子进程.Popen使用git pager

来自分类Dev

Python子进程/ Popen标准输出被截断

来自分类Dev

Python对Popen子进程使用超时

来自分类Dev

Python子进程Popen传递参数

来自分类Dev

python子进程popen立即启动

来自分类Dev

Python子进程/ Popen标准输出被截断

来自分类Dev

子进程 Popen 运行 python 命令

来自分类Dev

将局部变量传递给子进程popen在python中运行'gnome-terminal -e'

来自分类Dev

Python子进程.Popen用信号杀死后返回代码

来自分类Dev

Python子进程Popen stdout仅用于变量

来自分类Dev

在Python的子进程/ Popen中将stdout重定向到stderr

来自分类Dev

在python子进程popen中格式化命令

来自分类Dev

Python popen shell命令等到子进程完成

来自分类Dev

关闭stdin之前,Python子进程Popen readline

来自分类Dev

Python子进程.Popen + ffmpeg中断终端输入

来自分类Dev

在Python的子进程/ Popen中将stdout重定向到stderr

来自分类Dev

Python子进程Popen stdout仅用于变量

来自分类Dev

在python子进程popen中格式化命令

来自分类Dev

杀死Popen子进程

来自分类Dev

C - 设置“popen”子进程的标准输入 - 跨平台

来自分类Dev

Unicode和子进程.Popen

来自分类Dev

使用子进程调用/ popen从另一个python脚本执行python脚本

来自分类Dev

Python子流程popen管道

来自分类Dev

subprocess.Popen-不支持`cwd`

来自分类Dev

为什么Unix和Windows之间的Python子进程Popen如此不同?

来自分类Dev

从Python子进程(Popen)中读取一些标准输出

来自分类Dev

Python子进程Popen.terminate()仍然停留在wait()上

来自分类Dev

Python-子进程popen并调用相同的错误-没有类型不可迭代吗?

Related 相关文章

热门标签

归档