Popen的文档提到您不能指定相对于“更改工作目录” kwarg的可执行路径。
如果
cwd
不是None,则子目录的当前目录将在cwd
执行之前更改为 。
请注意,搜索可执行文件时不会考虑此目录,因此您无法指定程序相对于的路径cwd
。
但是python在我的系统上的行为似乎与这种说法直接矛盾:
/tmp$ mkdir a
/tmp$ cp /bin/ls /tmp/a/my_ls
/tmp$ mkdir b
/tmp$ touch /tmp/b/potato
/tmp$ cd /home/wim
~$ 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
是否在使用相对路径来cwd
依赖于平台且不应依赖的东西?还是这是一个文档错误?
(从评论这个问题产卵由glglgl这里)
是的,这取决于平台。
在POSIX系统上,该过程是分叉的,并且在子进程os.chdir(cwd)
中执行可执行程序之前先执行a 。
但是,在Windows上,将使用CreateProcess()
API调用并将cwd
其作为lpCurrentDirectory
参数传递。没有目录发生改变,并且CreateProcess()
调用不会
不 找咨询时,该参数lpApplicationName
来执行。
为了使您的应用程序跨平台,在查找可执行文件时,您不应依赖于要更改的当前工作目录。
本文向大家介绍Linux 相对路径和绝对路径的使用,包括了Linux 相对路径和绝对路径的使用的使用技巧和注意事项,需要的朋友参考一下 01. 概述 绝对路径和相对路径在shell环境中经常遇到,各有用处。有时候相对路径比较方便,有时候绝对路径比较方便。 02. 绝对路径(Absolute Pathname) 绝对路径必定由**/**开头 绝对路径是为档案/文件的所在位置做指向 在任何时候,都可以
问题内容: 我们在量角器上进行了大量的端到端测试。我们正在遵循Page Object模式,这有助于我们保持测试的清洁和模块化。我们还有一组帮助程序功能,可以帮助我们遵循DRY原理。 问题: 单个规范可能需要多个页面对象和帮助程序模块。例如: 你可以看到,我们有一个目录遍历在每一个需要声明:。这是因为我们有一个目录,其中将规范和多个目录存放在受测试的应用程序功能分组下。 问题: 解决量角器中相对路径
我是Java新手,正在尝试构建一个FX应用程序。我的一个函数旨在用其他字符串替换某些字符串。只要我定义了目标文件的绝对路径,脚本就可以正常工作,但当我使用相对路径时,脚本就会中断。 问题出在方法“ReadAllBytes”中,该方法只适用于完整路径。但是我需要相对路径,因为文件夹位置会有所不同。 目标文件位于项目文件夹中。是否有其他方法可以用来读取文件内容,而不需要绝对路径? 提前多谢。下面是代码
问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置
问题内容: 我正在尝试使用相对路径来定位Java类中的可执行文件,而不是有效的硬编码行,但是使用类似以下内容的方法: 失败…在Java中使用相对路径的正确方法是什么? 问题答案: 最可能的解释是您当前的目录不在您认为的位置。您可以检查user.dir的系统属性以查看应用程序的基本路径是什么,或者可以执行以下操作: 在使用该相对路径调试相对引用的起始位置之前。
问题内容: 我有一个网址: 和相对路径: 我想使用变量和 怎么做? 问题答案: