【问题标题】:Find 'all' files in a directory, not all files found在目录中查找“所有”文件,而不是找到所有文件
【发布时间】:2014-12-01 20:39:13
【问题描述】:

使用 python,我试图在 /sys 中查找所有文件并匹配某个文件。我遇到的问题是并非所有文件都被找到。这不是访问的问题。我知道python可以读取和写入文件,我已经使用file.open("file_path","w")file.write()手动测试过。我只是想知道是否有一些技巧可以找到我在这里丢失的文件:

import os,re

for roots,dirs,files in os.walk('/sys'):
  match=re.search(r'\S+/rq_affinity',roots)
  if match:
    print(match.group())

我已经尝试将使用os.walk() 找到的每个文件写入一个文件,然后使用shell 和grep 查看我要查找的文件是否存在,所以问题不在于匹配.


固定搜索:

import os,re

for roots,dirs,files in os.walk('/sys'):
  for file in files:
    match=re.search(r'\S+/rq_affinity',os.path.join(roots,file))
    if match:
      print(match.group())

【问题讨论】:

    标签: python file shell scripting find


    【解决方案1】:

    rq_affinity 不是文件吗?为什么你会在roots 得到那个?

    /sys/dev/block 下的条目也是符号链接,因此您需要告诉 os.walkfollowlinks=True 跟随它们。

    【讨论】:

    • 这让我更进一步,但我仍然无法在 (/sys/devices/virtual/block/loop0/queue) 之类的测试目录中找到所有文件。编辑:Nvm,我明白了,忘了查看“文件”列表。谢谢大佬。