当前位置:  开发笔记 > 编程语言 > 正文

python:试图理解"子进程"O/S调用

如何解决《python:试图理解"子进程"O/S调用》经验,为你挑选了1个好方法。

请在下面的对话框中帮忙解决很多问题:

- )为什么"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中轻松完成的任务.



1> tripleee..:

"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中轻松完成的任务.


`newest = max(os.listdir(os.curdir),key = os.path.getmtime)`.相关:[如何获得在python中按创建日期排序的目录列表?](http://stackoverflow.com/q/168409/4279)
推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有