当前位置: 首页 > 面试题库 >

Python子进程Popen:为什么“ ls * .txt”不起作用?

袁高峰
2023-03-14
问题内容

我在看这个问题。

就我而言,我想做一个:

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脚本成功运行是因为它创建的日志和它制作的辅助批处理文件使用的

  • 问题内容: 我有两个档案 秒杀 test_spike.py: 当我运行时,第一个测试用例将通过,但是第二个将失败。而我切换到use ,则两个都失败了。 我不明白这是怎么发生的?这些情况本应全部通过。 问题答案: 对于 test_foo, 您没有正确使用补丁。您应该像这样使用它: 这给了我: 现在,第二个示例不起作用,因为您导入了bar函数(获取对其的引用),然后尝试对其进行模拟。模拟某些内容时,您

  • 问题内容: 我正在尝试从JSON网址获取集合。骨干网确实发送了请求并得到了响应,但是在它之后的集合中没有: 这是我的JavaScript: 响应中的JSON 响应中的Content-Type HTTP标头为。 为什么不将其加载到集合中?JSON是否正确? 一些更多的代码: 问题答案: 是异步的。尝试 要么 要么