gpt4 book ai didi

Python os.listdir 没有给出一致的输出

转载 作者:行者123 更新时间:2023-12-01 08:53:43 26 4
gpt4 key购买 nike

我在 Linux Ubuntu 18.04 上的 Conda 虚拟环境中使用 Python 3.6.2。

我尝试了多种方法来列出特定路径的文件和目录,但我尝试的每种方法似乎只列出目录中的文件,而不是文件和目录。

我的代码包含

directory_contents = os.listdir(run_directory)
print(directory_contents)

仅显示

['170224-ARC122-1-uM-Cis-S1-subsample_R1_001.fastq.gz', '170224-ARC122-1-uM-Cis-S1-subsample_R2_001.fastq.gz']

如果我在 listdir 命令之前调用中断,然后单步执行 listdir 命令,则变量将填充正确的内容

ipdb.set_trace()
print(directory_contents)
directory_contents = os.listdir(run_directory)
print(directory_contents)

*** NameError: name 'directory_contents' is not defined

['170224-ARC122-1-uM-Cis-S1-subsample_R1_001.fastq.gz', 'bw', 'Stats', 'bwChrM', 'bg', '170224-ARC122-1-uM-Cis-S1-subsample_R2_001.fastq.gz', 'bgChrM', 'Log']

listdir命令之后调用中断

directory_contents = os.listdir(run_directory)
ipdb.set_trace()
print(directory_contents)

给出

['170313-ARC122-no-Cis-S5-subsample_R2_001.fastq.gz', '170313-ARC122-no-Cis-S5-subsample_R1_001.fastq.gz']

我不理解什么或者我忽略了哪些额外的关键字/参数?为什么根据我是在命令之前还是之后中断而得到不同的结果?

这个看似简单的问题似乎不值得提出,但我已经没有解决方案了。

最佳答案

您可以使用 os.walk() 的第一个结果:

import os

# demo structure: 5 dirs, 5 files
for n in range(5):
os.mkdir(f"dir_{n}")

for n in range (10,15):
with open(f"file_{n}.txt","w") as f:
f.write("...")

# query
akt_dir, subdirs, files = next(os.walk("./")) # get the first result of the generator
print(akt_dir)
print(subdirs)
print(files)

输出:

./
['dir_0', 'dir_2', 'dir_3', 'dir_4', 'dir_1']
['file_14.txt', 'file_10.txt', 'file_12.txt', 'main.py', 'file_13.txt', 'file_11.txt']

os.walk() 返回一个生成器 - 因此它可能会查询比您想要的更多内容。

关于Python os.listdir 没有给出一致的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52926533/

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