相关疑难解决方法(0)

指定popen的工作目录

有没有办法在Python中指定命令的运行目录subprocess.Popen()

例如:

Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Run Code Online (Sandbox Code Playgroud)

我的Python脚本位于 C:\programs\python

是否可以C:\mytool\tool.exe在目录中运行D:\test\local

如何设置子流程的工作目录?

python subprocess popen

174
推荐指数
2
解决办法
14万
查看次数

使用子进程运行多个bash命令

如果我echo a; echo b在bash中运行,结果将是两个命令都运行.但是,如果我使用subprocess,则运行第一个命令,打印出整个行的其余部分.下面的代码是echos a; echo b而不是a b,如何让它运行这两个命令?

import subprocess, shlex
def subprocess_cmd(command):
    process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE)
    proc_stdout = process.communicate()[0].strip() 
    print proc_stdout

subprocess_cmd("echo a; echo b")
Run Code Online (Sandbox Code Playgroud)

python bash subprocess

32
推荐指数
3
解决办法
9万
查看次数

如何设置父进程的工作目录?

正如标题所揭示的那样,我们正在编写一个Unix风格的shell实用程序U,应该从bash调用(在大多数情况下).

究竟是如何能ü改变的bash(一般或父母)的工作目录?

PS shell实用程序chdir成功完成相同的操作,因此必须有一种实现该效果的编程方式.

linux gcc process parent working-directory

23
推荐指数
4
解决办法
9410
查看次数

subprocess.Popen使用相对路径

Popen 的文档提到你不能指定相对于'change working directory'kwarg的可执行路径.

如果cwd不是None,则子项的当前目录将在cwd执行之前更改为 .请注意,在搜索可执行文件时不考虑此目录,因此您无法指定程序相对于的路径cwd.

但是python在我的系统上的行为似乎直接与这种说法相矛盾:

wim@SDFA100461C:/tmp$ mkdir a
wim@SDFA100461C:/tmp$ cp /bin/ls /tmp/a/my_ls
wim@SDFA100461C:/tmp$ mkdir b
wim@SDFA100461C:/tmp$ touch /tmp/b/potato
wim@SDFA100461C:/tmp$ cd /home/wim
wim@SDFA100461C:~$ python
Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import check_output
>>> check_output(['../a/my_ls'], cwd='/tmp/b')
'potato\n'
>>> check_output(['../a/my_ls'])
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)

是否使用相对路径来cwd依赖于平台并且不应该依赖它?或者这是一个文档错误?

(这个问题从评论通过glglgl产卵这里)

python subprocess path popen cwd

8
推荐指数
1
解决办法
3596
查看次数

从不同的工作目录运行Python脚本

我有这个程序 Namechange.py ,它可以更改文件的名称(总是削减一些无用的结尾)。一切工作正常,但我在很多不同的目录中经常使用这个文件,当我想更改某些内容时,这很麻烦。我正在搜索的是一个 python 脚本,它让我可以在我选择的目录中执行该脚本。

我的第一个想法是运行另一个脚本,将 Namechange.py 复制到所需的目录中,然后在那里执行它,并在一切完成后将其删除。复制部分有效。到目前为止,我尝试使用符号链接(它只是执行工作目录中的脚本:D)以及子进程模块,它表示当我使用时没有这样的目录:

subprocess.call(["cd", newpath])

newpath 是我要使用脚本的目录的绝对路径。

出现错误 OSError: [Errno 2] 没有这样的文件或目录。

如果有人有一种优雅的方式来实现这一目标,我会很高兴。

谢谢,再见

python subprocess

4
推荐指数
1
解决办法
1万
查看次数

为什么os.system("cd mydir")不工作,我们必须在python中使用os.chdir("mydir")?

我尝试做一个"pwd"或cwd,在cd之后,当我们使用os.system("cd")时它似乎不起作用.是否存在创建子进程的方式.这都是在Linux下.

python sys

2
推荐指数
3
解决办法
1745
查看次数

如何在不影响全局工作目录的情况下临时更改Python中的目录来执行代码?

我需要在不更改全局工作目录的情况下执行操作。我的情况是我有几个文件夹,每个文件夹中都有一些文件。我需要使用这些文件进行一些计算。最初,我尝试了以下方法:

with os.chdir('/directory'):
    ...some code needing execution inside 
Run Code Online (Sandbox Code Playgroud)

但得到了AttributeError: __enter__。在网上阅读后,使用with似乎不是一个选择。因此,我正在寻找另一种优雅的方式来做到这一点。

我也尝试过使用os这样的语句:

cwd = os.getcwd()

os.chdir('/directory')
..run code inside directory 

os.chdir(cwd)
Run Code Online (Sandbox Code Playgroud)

但这在调试过程中很痛苦,而且似乎是一种不好的做法。

python directory

2
推荐指数
1
解决办法
1500
查看次数

在python中执行两行以上的bash代码

我正在尝试编写python代码,它将在linux机器的cmd终端中执行以下步骤

cd /path/to/destination/
3dAFNItoNIFTI *epi*
Run Code Online (Sandbox Code Playgroud)

我试过subprocess.call两次,一次cd,然后执行该命令.但似乎没有用.

有没有办法使用子进程调用两行inux命令代码?

谢谢!

python linux bash subprocess

0
推荐指数
1
解决办法
104
查看次数

标签 统计

python ×7

subprocess ×5

bash ×2

linux ×2

popen ×2

cwd ×1

directory ×1

gcc ×1

parent ×1

path ×1

process ×1

sys ×1

working-directory ×1