我有几个同名的文件,我想得到最新的文件
[根@xxxtmp]#ls-t1 abclog*
1957年 abclog.1830年 abclog.1799年 abclog.1742年
我可以通过执行下面的命令来完成。在
[根@xxxtmp]#ls-t1 abclog*|头部-n 1
1957年
但是,当我试图在python中执行相同的操作时,出现错误:
subprocess.check_output("ls -t1 abclog* | head -n 1",shell=True) ls: cannot access abclog*: No such file or directory ''
似乎无法将“*”识别为特殊参数。我怎样才能达到同样的效果?在
正如其他人所指出的,您的代码应该可以工作。它不起作用可能是因为当前目录不是您所设想的目录,所以
abc*
是由shell扩展的而不是(即使设置了shell=True
),并按原样传递给ls
,从而导致“没有这样的文件”错误。在调用
check_output
时,必须传递绝对路径或使用cwd=
参数。另一个不错的python替代方法是避免subprocess
,只使用python代码返回最近修改过的文件:(使用
max
和os.path.getmtime
作为键,glob.glob
过滤文件)请确保在文件所在的目录中执行此操作。如果您只是启动Idle来运行此代码,那么您将而不是位于该目录中。在
相关问题 更多 >
编程相关推荐