在使用Popen或check_output的python子进程中,我需要列出给定源目录中的文件和目录。但是我只能使用命令ls -l。
样例代码
cmd = ["ls", "-l", source]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
stdout, stderr = proc.communicate()
exitcode = proc.returncode
if exitcode != 0:
raise SystemError("Exitcode '{}', stderr: '{}', stdout: '{}' for command: '{}'".format(
exitcode, stderr, stdout, cmd))
从proc上面,通过使用grep或任何其他方式,我能否仅获取源目录中的文件和目录名称列表而没有其他信息?
如果您坚持使用子流程,请尝试:
[x.split(' ')[-1] for x in stdout.decode().split('\n')[1:-1]]
显然,这是一种非常“ hacky”的方式。相反,我可以建议标准库全局
import glob
glob.glob(source + '/*')
返回源中所有文件/目录名称的列表。
编辑:
cmd = ["ls", source]
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE)
stdout, stderr = proc.communicate()
exitcode = proc.returncode
stdout.decode("utf-8").split('\n')[:-1]
也应该这样做。-l
这里没有选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句