请在下面的对话框中帮忙解决很多问题:
- )为什么"subprocess.check_output(["ls"," - rt","."])"产生没有输出,但至少被接受了?
- )为什么"subprocess.check_output(["ls -rt","."])"根本不被接受?
- )最重要的是:我怎样才能在python中获取与某些正则表达式匹配的最新文件的名称?我的想法是向python提供类似"ls -rt $ REGEX | head -1"的东西,但python似乎非常不喜欢这样的方法..?
karel@suske:~/home_shared/develop/airnav_db$ python --version Python 2.7.6 karel@suske:~/home_shared/develop/airnav_db$ python -c 'import subprocess ; subprocess.check_output(["ls -rt","."])' Traceback (most recent call last): File "", line 1, in File "/usr/lib/python2.7/subprocess.py", line 566, in check_output process = Popen(stdout=PIPE, *popenargs, **kwargs) File "/usr/lib/python2.7/subprocess.py", line 710, in __init__ errread, errwrite) File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory karel@suske:~/home_shared/develop/airnav_db$ python -c 'import subprocess ; subprocess.check_output(["ls","-rt","."])' karel@suske:~/home_shared/develop/airnav_db$ ls -l total 52 drwxrwxrwx 2 karel users 4096 Oct 11 2009 auxdata ...
tripleee.. 6
"ls -rt"
不是有效命令的名称,所以这就是你的第二种情况失败的原因."ls"
与参数"-rt"
和"."
工作正常,只是没有产生你期望的输出.但无论如何,你应该循环os.listdir('.')
而不是.
when = 0 for name in os.listdir('.'): if not 'foo' in name: continue # name matches *foo* st = os.stat(name) if st.mtime > when: when = st.mtime newest = name print newest
如果你真的需要它,这应该很容易扩展到正则表达式; 但对于大多数步行任务来说,他们真的有点过分.
对于记录,subprocess.check_output
将shell命令的输出作为字符串返回.但是你真的想避免使用外部进程来完成在Python中轻松完成的任务.
"ls -rt"
不是有效命令的名称,所以这就是你的第二种情况失败的原因."ls"
与参数"-rt"
和"."
工作正常,只是没有产生你期望的输出.但无论如何,你应该循环os.listdir('.')
而不是.
when = 0 for name in os.listdir('.'): if not 'foo' in name: continue # name matches *foo* st = os.stat(name) if st.mtime > when: when = st.mtime newest = name print newest
如果你真的需要它,这应该很容易扩展到正则表达式; 但对于大多数步行任务来说,他们真的有点过分.
对于记录,subprocess.check_output
将shell命令的输出作为字符串返回.但是你真的想避免使用外部进程来完成在Python中轻松完成的任务.