- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用子进程模块时遇到了一些问题。我希望模块运行相当于 'ls -l "/path/to/file/with possible space in directory/or with space in name"' 的 shell 命令。当文件名不是变量时,子进程可以正常工作。如果文件名是包含引号的变量,则它不起作用。
无效的代码:
import subprocess
archive_file_list = "/var/tmp/list"
archive = open(archive_file_list, "r")
for line in archive:
noreturnline = line[:-1]
quotedline = "\"" + noreturnline + "\""
if extension == "zip":
print quotedline
archivelist = subprocess.check_output(['ls', '-l', quotedline])
print archivelist
有效的代码:
archivelist = subprocess.check_output(['ls', '-l', "/path/to/file/with possible space in directory/or with space in name"])
以下是不起作用的代码的输出:
"/path/to/file/with possible space in directory/or with space in name"
ls: cannot access "/path/to/file/with possible space in directory/or with space in name" No such file or directory
Traceback (most recent call last):
File "./archive_test.py", line 12, in <module>
archivelist = subprocess.check_output(['ls', '-l', quotedline])
File "/usr/lib64/python2.7/subprocess.py", line 575, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command '['ls', '-l', '"/path/to/file/with possible space in directory/or with space in name"']' returned non-zero exit status 2
在你问之前 - 是的,我已经通过从命令行运行“ls -l”验证了“/path/to/file/目录中可能存在空间/或名称中存在空间”确实存在。
如有任何帮助,我们将不胜感激。提前致谢。
最佳答案
在第一个命令中(这是最好的选项):
archivelist = subprocess.check_output(['ls', '-l', "/path/to/file/with possible space in directory/or with space in name"])
第三个参数实际上是/path/to/file/目录中可能存在空格/或名称中存在空格
(不带引号),这是存在的文件名,并且该命令有效。
由于 shell=True
甚至没有设置,命令直接传递给 exec
,参数按原样传递:空格和其他字符被保留.
如果您添加更多引号,它们不会被删除,而是会按字面意思传递给 ls
。
由于没有名为“/path/to/file/with possible space in directory/or with space in name”的文件(带引号),因此找不到文件/dir。
还有另一种调用命令的(肮脏的)方式:将完整命令作为字符串(而不是参数列表)传递。在这种情况下,这是可行的(至少在 Windows 上没有 shell=True
, subprocess
似乎可以处理参数分割, shell=True
似乎类 Unix 系统上需要):
subprocess.check_output('ls -l "/path/to/file/with possible space in directory/or with space in name"')
但是您的第一种方法更干净,特别是如果您不知道目录名称,因为它是一个参数。让 subprocess
为您完成繁重的工作。
在类 Unix 系统上,使用最后一种方法需要 shell=True
,但是这样您的程序就会遭受恶意攻击,例如任何开放系统调用(附加 ;rm -rf/
到文件名,例如评估子 shell)
最后一点:如果您真的打算使用 ls
并解析其输出,请不要这样做( http://mywiki.wooledge.org/ParsingLs ),请使用标准 os.listdir
、os.path.getsize/getmtime
和 os.stat
调用来获取您需要的信息。
关于python - 在子进程中使用包含双引号的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44422368/
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How to nest OR statements in JavaScript? 有没有办法做到这一点:
在 JavaScript 中有没有办法让一个变量总是等于一个变量?喜欢var1 = var2但是当var2更新,也是var1 . 例子 var var1 = document.getElementBy
我正在努力理解这代表什么 var1 = var2 == var3 我的猜测是这等同于: if (var2 == var3): var1 = var2 最佳答案 赋值 var1 = var2
这个问题已经有答案了: What does the PHP error message "Notice: Use of undefined constant" mean? (2 个回答) 已关闭 8
我在临时表中有几条记录,我想从每条记录中获取一个值并将其添加到一个变量中,例如 color | caption -------------------------------- re
如何将字符串转为变量(字符串变量--> $variable)? 或者用逗号分隔的变量列表然后转换为实际变量。 我有 2 个文件: 列名文件 行文件 我需要根据字符串匹配行文件中的整行,并根据列名文件命
我有一个我无法解决的基本 php 问题,我也想了解为什么! $upperValueCB = 10; $passNodeMatrixSource = 'CB'; $topValue= '$uppe
这可能吗? php $variable = $variable1 || $variable2? 如果 $variable1 为空则使用 $variable2 是否存在类似的东西? 最佳答案 PHP 5
在 Perl 5.20 中,for 循环似乎能够修改模块作用域的变量,但不能修改父作用域中的词法变量。 #!/usr/bin/env perl use strict; use warnings; ou
为什么这不起作用: var variable; variable = variable.concat(variable2); $('#lunk').append(variable) 我无法弄清楚这一点
根据我的理解,在32位机器上,指针的sizeof是32位(4字节),而在64位机器上,它是8字节。无论它们指向什么数据类型,它们都有固定的大小。我的计算机在 64 位上运行,但是当我打印包含 * 的大
例如: int a = 10; a += 1.5; 这运行得很完美,但是 a = a+1.5; 此作业表示类型不匹配:无法从 double 转换为 int。所以我的问题是:+= 运算符 和= 运算符
您好,我写了这个 MySQL 存储过程,但我一直收到这个语法错误 #1064 - You have an error in your SQL syntax; check the manual that
我试图在我的场景中显示特定的奖牌,这取决于你的高分是基于关卡的目标。 // Get Medal Colour if levelHighscore goalScore { sc
我必须维护相当古老的 Visual C++ 源代码的大型代码库。我发现代码如下: bIsOk = !!m_ptr->isOpen(some Parameters) bIsOk的数据类型是bool,is
我有一个从 MySQL 数据库中提取的动态产品列表。在 list 上有一个立即联系 按钮,我正在使用一个 jquery Modal 脚本,它会弹出一个表单。 我的问题是尝试将产品信息变量传递给该弹出窗
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: What is the difference between (type)value and type(va
jQuery Core Style Guidelines建议两种不同的方法来检查变量是否已定义。 全局变量:typeof variable === "undefined" 局部变量:variable
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: “Variable” Variables in Javascript? 我想肯定有一种方法可以在 JavaScrip
在语句中使用多重赋值有什么优点或缺点吗?在简单的例子中 var1 = var2 = true; 赋值是从右到左的(我相信 C# 中的所有赋值都是如此,而且可能是 Java,尽管我没有检查后者)。但是,
我是一名优秀的程序员,十分优秀!