gpt4 book ai didi

python - 从 python 运行 bash 命令并捕获文件对象

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:48 26 4
gpt4 key购买 nike

在 jupyter notebook 中,我可以运行以下命令并获取我可以打开的文件对象列表:

PATH = someuser/data
files = get_ipython().getoutput('ls {PATH}') #%ls {PATH} in notebook
#then I can run
text = get_ipython().getoutput('less {PATH}{files[0]}')
print(text)

我尝试了以下方法:

path = f"{PATH}"
files = subprocess.call(['ls', path])

files = subprocess.run(['ls', path], stdout=subprocess.PIPE).stdout.decode('utf-8')

files = os.system(path)

但我只能得到一个字符串对象而不是我可以打开并从中获取数据的文件对象。

最佳答案

文件名 字符串。这就是您传递给 open 以获取文件对象的内容,然后您可以从中获取数据。例如,假设您有一个名为 spam.py 的脚本:

filename = 'spam.py'
with open(filename) as fileobj:
data = fileobj.read()
print(data)

当你运行它时,它会自己打印出来。

现在,您在 ls 上调用 subprocess.run 并读取其 stdout 得到的输出不是每个文件的字符串,但是一根大绳子。

这里的简单答案是不要调用 ls。 Python 已经可以为您获取文件名列表:

filenames = os.listdir(path)
for filename in filenames:
with open(filename) as fileobj:
# do stuff with fileobj

但是如果你真的需要,你可以使用,例如,splitlines 方法将你的输出变成一个行列表,这与 listdir 返回,只是以更复杂的方式检索。

关于python - 从 python 运行 bash 命令并捕获文件对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49311270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com