我在看这个问题。
就我而言,我想做一个:
import subprocess
p = subprocess.Popen(['ls', 'folder/*.txt'], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate()
现在,我可以在命令行中检查“ ls文件夹/*.txt”的工作原理,因为该文件夹包含许多.txt文件。
但是在Python(2.6)中,我得到了:
ls:无法访问*:没有此类文件或目录
我尝试做: r'folder/\*.txt'
r"folder/\*.txt"
r'folder/\\*.txt'
和其他变体,但似乎Popen
根本不喜欢*
角色。
还有其他逃生方法*
吗?
*.txt
被您的外壳file1.txt file2.txt ...
自动展开。如果您引用*.txt
,则不起作用:
[~] ls "*.py"
ls: cannot access *.py: No such file or directory
[~] ls *.py
file1.py file2.py file3.py
如果要获取与模式匹配的文件,请使用glob
:
>>> import glob
>>> glob.glob('/etc/r*.conf')
['/etc/request-key.conf', '/etc/resolv.conf', '/etc/rc.conf']
问题内容: 我对使用时如何搜索可执行文件感到困惑。如果给子进程提供了绝对路径,那么它就可以工作,但是我正在尝试使用相对路径。我发现,如果设置环境变量PYTHONPATH,则可以从该路径中获取导入的模块,并且PYTHONPATH在其中,但似乎对的行为没有帮助。我也尝试编辑将PYTHONPATH添加到的文件,就像这样 并验证了在以交互方式,与ipython或通过从命令行运行脚本启动python时,PY
我试图使用popen启动一个子进程,该子进程一个接一个地调用两个命令(带有多个参数)。第二个命令依赖于第一个命令的运行,因此我希望使用一个子进程同时运行这两个命令,而不是生成两个进程并等待第一个。 但是我遇到了一些问题,因为我不知道如何给出两个命令输入,或者如何将命令作为一个对象分开。 另外,如果可能的话,我会尽量避免将shell设置为true。 这基本上就是我要做的:
问题内容: 为什么这项工作有效- 但这不是- 第二种情况下的输出为。你能解释一下输出吗? 问题答案: 该方法没有返回值。它会在适当的位置更改列表,并且由于您没有将分配给任何变量,因此只是“迷失在空间” 我没有重载所有有问题的方法,但是概念应该很清楚。
前几天我注意到一个相当有趣的问题。 我在Windows服务器2008 RT上有一个Windows计划任务。此任务运行一个运行我构建的python脚本的批处理文件。在这个python脚本中有一个subprocess.Popen调用来运行其他几个批处理文件。但是在过去的几天里,我注意到该任务已成功运行,但辅助批处理文件没有。我知道python脚本成功运行是因为它创建的日志和它制作的辅助批处理文件使用的
问题内容: 我正在尝试使用子过程执行简单的回显操作: 但是它什么也不打印。即使我将命令更改为它也不会打印任何内容。任何帮助表示赞赏。 问题答案: 在Unix上,第2个及以下参数表示外壳本身,请使用字符串将命令传递给外壳: 您也可以将其编写为: 从子流程的文档: 在带有的Unix上,shell默认为/ bin / sh。如果args是字符串,则该字符串指定要通过外壳执行的命令。这意味着字符串的格式必
问题内容: 我有两个档案 秒杀 test_spike.py: 当我运行时,第一个测试用例将通过,但是第二个将失败。而我切换到use ,则两个都失败了。 我不明白这是怎么发生的?这些情况本应全部通过。 问题答案: 对于 test_foo, 您没有正确使用补丁。您应该像这样使用它: 这给了我: 现在,第二个示例不起作用,因为您导入了bar函数(获取对其的引用),然后尝试对其进行模拟。模拟某些内容时,您