我试图通过python来追踪文件的内容。我使用的代码如下
#! /usr/bin/python
import subprocess
import os.path
# Get the file path
filepath = os.path.join(baseDir,"filename.*" + uniqueId)
# Call subprocess and get last 10 lines from file
spTailFile = subprocess.Popen(["tail", "-10", filepath ], stdout=subprocess.PIPE)
tailOutput = spTailFile.communicate()[0]
print tailOutput
上面的代码会抛出如下错误:
tail: cannot open `/hostname/user/app/filename.*39102'
如果我直接在bash中使用filepath执行tail命令,我会看到输出。
tail -10 /hostname/user/app/filename.*39102
为什么子进程在执行tail命令时会传递额外的反引号(`)?
更新
我最终使用glob来查找@cdarke建议的文件,然后将其传递给Popen cmd。
答案 0 :(得分:1)
Bash扩展了' *',Popen没有。
两种可能性: 1.在您的脚本中执行此操作并传递文件名而不使用' *' 2.创建一个Bash脚本并从python中调用它。